Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google稱為“NDK”。
眾所周知,Android程序運行在Dalvik虛擬機中,NDK允許用戶使用類似C / C++之類的原生代碼語言執行部分程序。
NDK包括了:
從C / C++生成原生代碼庫所需要的工具和build files。
將一致的原生庫嵌入可以在Android設備上部署的應用程序包文件(application packages files ,即.apk文件)中。
支持所有未來Android平臺的一些列原生系統頭文件和庫
一、NDK產生的背景
Android平臺從誕生起,就已經支持C、C++開發。眾所周知,Android的SDK基于Java實現,這意味著基于Android SDK進行開發的第三方應用都必須使用Java語言。但這并不等同于“第三方應用只能使用Java”。在Android SDK首次發布時,Google就宣稱其虛擬機Dalvik支持JNI編程方式,也就是第三方應用完全可以通過JNI調用自己的C動態庫,即在Android平臺上,“Java+C”的編程方式是一直都可以實現的。
不過,Google也表示,使用原生SDK編程相比Dalvik虛擬機也有一些劣勢,Android SDK文檔里,找不到任何JNI方面的幫助。即使第三方應用開發者使用JNI完成了自己的C動態鏈接庫(so)開發,但是so如何和應用程序一起打包成apk并發布?這里面也存在技術障礙。比如程序更加復雜,兼容性難以保障,無法訪問Framework API,Debug難度更大等。開發者需要自行斟酌使用。
于是NDK就應運而生了。NDK全稱是Native Development Kit。
NDK的發布,使“Java+C”的開發方式終于轉正,成為官方支持的開發方式。NDK將是Android平臺支持C開發的開端。
二、為什么使用NDK
1.代碼的保護。由于apk的java層代碼很容易被反編譯,而C/C++庫反匯難度較大。
2.可以方便地使用現存的開源庫。大部分現存的開源庫都是用C/C++代碼編寫的。
3.提高程序的執行效率。將要求高性能的應用邏輯使用C開發,從而提高應用程序的執行效率。
4.便于移植。用C/C++寫得庫可以方便在其他的嵌入式平臺上再次使用。
三、NDK簡介
1.NDK是一系列工具的集合
NDK提供了一系列的工具,幫助開發者快速開發C(或C++)的動態庫,并能自動將so和java應用一起打包成apk。這些工具對開發者的幫助是巨大的。
NDK集成了交叉編譯器,并提供了相應的mk文件隔離CPU、平臺、ABI等差異,開發人員只需要簡單修改mk文件(指出“哪些文件需要編譯”、“編譯特性要求”等),就可以創建出so。
NDK可以自動地將so和Java應用一起打包,極大地減輕了開發人員的打包工作。
2.NDK提供了一份穩定、功能有限的API頭文件聲明
Google明確聲明該API是穩定的,在后續所有版本中都穩定支持當前發布的API。從該版本的NDK中看出,這些API支持的功能非常有限,包含有:C標準庫(libc)、標準數學庫(libm)、壓縮庫(libz)、Log庫(liblog)。
四、NDK開發環境的搭建
1.下載安裝Android NDK
地址:http://developer.android.com/sdk/ndk/index.html
2.下載安裝cygwin
由于NDK編譯代碼時必須要用到make和gcc,所以你必須先搭建一個linux環境, cygwin是一個在windows平臺上運行的unix模擬環境,它對于學習unix/linux操作環境,或者從unix到windows的應用程序移植,非常有用。通過它,你就可以在不安裝linux的情況下使用NDK來編譯C、C++代碼了。下載地址:http://www.cygwin.com
1)然后雙擊運行吧,運行后你將看到安裝向導界面。
2)點擊下一步,此時讓你選擇安裝方式:
Install from Internet:直接從Internet上下載并立即安裝(安裝完成后,下載好的安裝文件并不會被刪除,而是仍然被保留,以便下次再安裝)。
Download Without Installing:只是將安裝文件下載到本地,但暫時不安裝。
Install from Local Directory:不下載安裝文件,直接從本地某個含有安裝文件的目錄進行安裝。
3)選擇第一項,然后點擊下一步。
4)選擇要安裝的目錄,注意,最好不要放到有中文和空格的目錄里,似乎會造成安裝出問題,其它選項不用變,之后點下一步:
5)上一步是選擇安裝cygwin的目錄,這個是選擇你下載的安裝包所在的目錄,默認是你運行setup.exe的目錄,直接點下一步就可以:
6)此時你共有三種連接方式選擇:
Direct Connection:直接連接。
Use IE5 Settings:使用IE的連接參數設置進行連接。
Use HTTP/FTP Proxy:使用HTTP或FTP代理服務器進行連接(需要輸入服務器地址、端口號)。
用戶可根據自己的網絡連接的實情情況進行選擇,一般正常情況下,均選擇第一種,也就是直接連接方式。然后再點擊“下一步”。
7)這是選擇要下載的站點,選擇后點下一步。
8)此時會下載加載安裝包列表
9)Search是可以輸入你要下載的包的名稱,能夠快速篩選出你要下載的包。那四個單選按鈕是選擇下邊樹的樣式,默認就行,不用動。View默認是Category,建議改成full顯示全部包再查,省的一些包被隱藏掉。左下角那個復選框是是否隱藏過期包,默認打鉤,不用管它就行,下邊開始下載我們要安裝的包吧,為了避免全部下載,這里列出了后面開發NDK用得著的包:autoconf2.1、automake1.10、binutils、gcc-core、gcc- g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make共12個包
10)然后開始選擇安裝這些包吧,點skip,把它變成數字版本格式,要確保Bin項變成叉號,而Src項是源碼,這個就沒必要選了。
11)下面測試一下cygwin是不是已經安裝好了。
運行cygwin,在彈出的命令行窗口輸入:cygcheck -c cygwin命令,會打印出當前cygwin的版本和運行狀 態,如果status是ok的話,則cygwin運行正常。
然后依次輸入gcc 主站蜘蛛池模板: 田东县| 怀化市| 武陟县| 三门峡市| 勐海县| 万山特区| 兴仁县| 呼伦贝尔市| 页游| 上虞市| 华安县| 邹城市| 柳林县| 东明县| 德昌县| 开江县| 海宁市| 阜阳市| 婺源县| 天镇县| 巫溪县| 利辛县| 景德镇市| 华池县| 寿光市| 洪湖市| 昭苏县| 兴和县| 黎城县| 凤山市| 高雄市| 邢台县| 海晏县| 修文县| 赤壁市| 汪清县| 瑞安市| 滕州市| 伊春市| 唐山市| 本溪市|