2 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
// 那要怎么生成Linux平臺(tái)的c/c+的dll給java調(diào)用 ?
dll文件是對(duì)于Windows平臺(tái)的文件,在Linux中是用so文件。 生成so文件,需要下載android的NDK開(kāi)發(fā)庫(kù)。
在AndroidStudio創(chuàng)建一個(gè)新項(xiàng)目時(shí),勾選NDK支持就好了。默認(rèn)的會(huì)產(chǎn)生一個(gè)能生成so文件的項(xiàng)目。
記得在AndroidStudio里面配置一下NDK的路徑,后者直接通過(guò)Androidstudio下載一個(gè)也行。

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
android平臺(tái)沒(méi)有“dll”,dll是windows平臺(tái)才有的。linux下類似的是 so。不建議在android上使用原生的代碼和直接使用socket。和pc機(jī)不同,100%的pc機(jī)都使用和x86兼容的cpu硬件。
但是在android上,不同的設(shè)備使用的cpu是完全不同的。比如有intel x86的cpu,有arm的cpu,有arm 64的cpu,還有定制的cpu,聯(lián)發(fā)科的那種,還有mips的cpu……如果你使用原生的代碼,必須針對(duì)碎片化的硬件設(shè)備和環(huán)境做適配,除非你是硬件生產(chǎn)廠家預(yù)裝特定的應(yīng)用,否則你會(huì)遇到前所未有的麻煩。雖然你會(huì)看到有很多使用jni去調(diào)用 so的案例,但是對(duì)于軟件開(kāi)發(fā)者(isv)來(lái)說(shuō),基本上都是在調(diào)用系統(tǒng)庫(kù)(類似windows下的開(kāi)發(fā)者調(diào)用win32 api)。
至于socket,大部分設(shè)備的權(quán)限、網(wǎng)絡(luò)環(huán)境和節(jié)能要求都不允許你這么做。android和windows平臺(tái)的編程模型有很大的不同,后臺(tái)的應(yīng)用被設(shè)計(jì)為掛起而不是繼續(xù)運(yùn)行的。而你應(yīng)該不想設(shè)計(jì)一種切換到后臺(tái)就收不到數(shù)據(jù)的應(yīng)用吧。
總之,你應(yīng)該去學(xué)習(xí)這個(gè)平臺(tái)的基礎(chǔ)知識(shí),而不是把pc程序移植上去。
- 2 回答
- 0 關(guān)注
- 637 瀏覽
添加回答
舉報(bào)