| 
 
 
 
 
 |  | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Android培訓:Android NDK是什么? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Android NDK是什么(me)?Android NDK 是在SDK前面又加(jia)上(shang)了"原(yuan)生"二字,即(ji)Native Development Kit,因此又被Google稱(cheng)為"NDK"。在此之前,Android平臺(tai)的(de)(de)第三方應(ying)用程(cheng)序(xu)均是依(yi)靠基于Java的(de)(de)Dalvik特制(zhi)虛擬機進行開發(fa)的(de)(de)。原(yuan)生SDK的(de)(de)公布(bu)可以讓開發(fa)者(zhe)更加(jia)直接的(de)(de)接觸Android系統(tong)資源,并使(shi)用傳統(tong)的(de)(de)C或C++語言(yan)編寫程(cheng)序(xu),并在程(cheng)序(xu)封包(bao)文件(jian)(.apks)中直接嵌入原(yuan)生庫(ku)文件(jian)。 Android NDK是什么? 1、Android NDK是一系列工具的集合。 
 2、Android NDK提供了一份穩定、功能有限的API頭文件聲明。 Google明(ming)確(que)聲明(ming)該API是穩(wen)定(ding)的(de),在后(hou)續(xu)所有(you)版本(ben)中(zhong)都穩(wen)定(ding)支持(chi)當前發布的(de)API。從該版本(ben)的(de)NDK中(zhong)看(kan)出,這些API支持(chi)的(de)功能非常有(you)限,包(bao)含有(you):C標準庫(libc)、標準數學(xue)庫(libm)、壓縮庫(libz)、Log庫(liblog)。 3、Android NDK帶來什么 1) NDK的(de)發(fa)布,使(shi)"Java+C"的(de)開發(fa)方(fang)式終于轉正(zheng),成為官(guan)方(fang)支持的(de)開發(fa)方(fang)式。 
   2)NDK將是Android平(ping)臺支持C開發的開端。 NDK提供(gong)了(le)的開(kai)發(fa)工具(ju)集合(he),使開(kai)發(fa)人員可(ke)以(yi)便捷地開(kai)發(fa)、發(fa)布C組件。同(tong)時,Google承諾在NDK后續版本(ben)中(zhong)提高"可(ke)調式(shi)"能力(li),即提供(gong)遠(yuan)程的gdb工具(ju),x使我們可(ke)以(yi)便捷地調試C源碼。 4、Android NDK的缺點 使用(yong)NDK編(bian)寫運(yun)行于android設備上的(de)通用(yong)代(dai)碼并(bing)不好,你的(de)應(ying)用(yong)依(yi)然應(ying)該主要使用(yong)Java編(bian)寫,這樣才能正確處理(li)Android系統的(de)事件來(lai)避免"應(ying)用(yong)無反應(ying)"對話框的(de)出現或處理(li)應(ying)用(yong)的(de)生(sheng)命周期。  NDK僅(jin)僅(jin)為(wei)android系(xi)統所支(zhi)持的(de)本地API和庫中(zhong)的(de)一小(xiao)部(bu)分(fen)些提供了頭文件。然(ran)而一個(ge)典型的(de)Android系(xi)統映(ying)像包含了很(hen)多本地共(gong)享庫,但這些應被看做是實現(xian)的(de)細節,這些實現(xian)可能在平臺更新或發(fa)布時發(fa)生徹底的(de)變化。   如果一(yi)個Android系(xi)統的庫沒有被NDK的頭文件(jian)明確支持(chi),那么應(ying)用不應(ying)依賴(lai)于它。否則可能在下一(yi)次系(xi)統升級后(hou)出現(xian)杯具。 5、NDK開發實踐 1) 把本地(di)代(dai)碼放在$PROJECT/jni/…下(xia),比如將hello.c放到apps/hello/jni/目(mu)錄(lu)下(xia) 2) 在(zai)你的NDK編譯系統中在(zai)$PROJECT/jni/Android.mk來(lai)描(miao)述你的源代碼 3) 可選(xuan):在$PROJECT/jni/Application.mk到你(ni)(ni)的編譯系(xi)統(tong)中來詳細描述(shu)你(ni)(ni)的項(xiang)目,盡管你(ni)(ni)開(kai)始的話不一定需要(yao)它(ta),但是它(ta)允許你(ni)(ni)使用更多的CPU或(huo)者覆蓋編譯器/鏈接(jie)器的標記 4) 從你的項目的目錄開始通過運行"$NDK/ndk-build"來(lai)編譯你的代(dai)碼,或者(zhe)從子目錄開始 5) 后(hou)一步(bu)可以copy,萬一成(cheng)(cheng)功,剝離共享庫的(de)(de)(de)應(ying)用層序需(xu)要你的(de)(de)(de)應(ying)用程(cheng)序的(de)(de)(de)項目根目錄(lu)。然后(hou)你通過通常的(de)(de)(de)方法來(lai)生(sheng)成(cheng)(cheng)終(zhong)的(de)(de)(de)apk。 通過上文的學習,相信你對Android NDK是什么?已經有了大致的了解,后續華清遠見Android培訓資料中會給(gei)出更多關于Android NDK的文章,敬請關注! 熱點鏈接: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||