Android NDK入門理解

誤解1:NDK 發佈之前,Android不支持C語言進行開發

從android平臺誕生的那一刻起,就意味着android能進行C/C++調用動態鏈接庫進行開發,開發第三方應用的時候不一定必須使用java語言進行開發,但是並不僅僅的限制於java語言來開發第三方應用,因爲google曾今在自己的android幫助文檔中聲明,它的Dalvik虛擬機支持JNI的調用方式,也就是開發第三方應用的時候完全可以通過JNI的方式調用自己的C動態鏈接庫,也就是說只要Dalvik虛擬機支持JNI的話,那麼肯定能能實現java與C語言的交互編譯。   

誤解的來源來自android的SDK文檔中找不到任何關於JNI方面的幫助文檔信息,即使第三方開發者使用JNI完成了自己的動態鏈接庫(.so)的開發,那麼.so文件怎麼跟自己的APK一起打包並且發佈呢?安裝交叉編譯器創建.so,並通過讀取asset(資源的方式),實現so文件的捆綁發佈,但是這種方式並非官方支持的方式,,所以NDK出來之前,我們將java+C的開發模式稱爲灰色開發模式,因爲這種方式官方沒有說支持,也沒有說不支持。

誤解2:有了NDK之後,我們可使用純C進行第三方應用的開發Android應用

Android SDK採用java語言發佈,把衆多的C開發人員排除在外第三方應用之外(Android是基於Linux系統,系統級別肯定是支持C開發的),NDK文檔明確說明:it's not a good way,因爲NDK並沒有提供各種系統事物處理支持,也沒有提供應用程序生命週期的支持,應用程序也沒有UI方面的API的支持,所以目前是用純C進行第三方應用開發的條件還不舉具備完整。

NDK=?

3.NDK==Native Development Kit  NDK==一系列工具集合

NDK提供了一系列的的工具,幫助開發者快速開發C/C++動態鏈接庫,並自動將so和java應用一起打包成APK,這些工具的提供簡化了開發者的步驟。

NDK集成了交叉編譯器,並提供了相應的mk文件隔離CPU,ABI,平臺等差異,開發人員只需要簡單的修改mk文件(指出哪些文件需要編譯,編譯性要求 等)就可以創建so

NDK將so與java應用一起打包成APK文件,極大的減輕了開發人員的工作。


4.NDK提供一份穩定的,功能有限的API頭文件聲明

google 明確聲明API是穩定的,在後續的所有版本中都將會支持以前發佈的API,目前的API版本功能非常有限,包含:

C標準庫(libc),標準數學庫(libm),壓縮庫(libz),Log庫(liblog)


5.使用NDK帶來的好處

使用NDK我們可以將要求高性能的應用邏輯使用C開發,從而提高應用程序的執行效率

使用NDK我們將需要保密的應用邏輯使用C開發,畢竟java包都是可以進行反編譯的

促使專業的so組件商的出現


6.NDK將是Android平臺支持C的開端

NDK提供了一系列的開發工具集合,使開發人員能夠便捷的發佈C組件,同時google承諾將會提高NDK的可調試性能

From:www.eoeAndroid.com

發佈了8 篇原創文章 · 獲贊 17 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章