Android下NDK开发环境搭建
Android下NDK開發(fā)環(huán)境搭建
?
1.?????AndroidNDK安裝與配置
?
1.1? NDK簡介
?
Android NDK是一套允許開發(fā)人員使用本地代碼(如C/C++)進(jìn)行Android APP部分功能開發(fā)的工具,通過這個工具,我們可以把用C/C++代碼編譯成可以直接運行在Android平臺上的本地代碼,這些本地代碼以動態(tài)鏈接庫( *.so )的形式存在,也正因為這樣,我們可以通過復(fù)用這些動態(tài)鏈接庫從而復(fù)用本地代碼。
那么,通過NDK這個開發(fā)工具包,那么我們是否可以將一個APK完全使用C/C++來編寫呢?
答案是不可以的。眾所周知,Android應(yīng)用程序是運行在Dalvik虛擬機(jī)上的。而NDK只開發(fā)了部分接口,所以NDK只是允許開發(fā)人員通過C/C++實現(xiàn)Android APP的部分功能。由于Android系統(tǒng)本身就是Linux核心,NDK只是負(fù)責(zé)把這些本地代碼編寫成可以運行在linux上的動態(tài)鏈接庫,從而繞過了Dalvik虛擬機(jī),直接運行在Android平臺上了。
?
The NDK is atoolset that allows you to implement parts of your app using native-codelanguages such as C and C++. For certain types of apps, this can be helpful soyou can reuse existing code libraries written in these languages, but most appsdo not need the Android NDK.
?
Before downloadingthe NDK, you should understand that the NDK will not benefit most apps. As adeveloper, you need to balance its benefits against its drawbacks. Notably,using native code on Android generally does not result in a noticableperformance improvement, but it always increases your app complexity. Ingeneral, you should only use the NDK if it is essential to your app—neverbecause you simply prefer to program in C/C++.
?
Typical goodcandidates for the NDK are CPU-intensive workloads such as game engines, signalprocessing, physics simulation, and so on. When examining whether or not youshould develop in native code, think about your requirements and see if theAndroid framework APIs provide the functionality that you need.
?
1.2? NDK下載
下載地址:http://developer.android.com/tools/sdk/ndk/index.html
圖1
可以看出現(xiàn)在的目標(biāo)平臺都有32和64位之分。
?
?
1.3? NDK安裝
直接把下載的安裝包解壓到我們想要放的路徑下即可,我這里是把加壓后的android-ndk-r10b(此目錄下就有ndk-build.cmd編譯工具)放在D:\ADT bundle目錄下。
?
1.4? NDK環(huán)境配置
配置環(huán)境變量,把ndk-build.cmd所在的位置D:\ADT bundle\android-ndk-r10b添加系統(tǒng)變量Path的添加此路徑信息,如下圖:
圖2
?
?
1.5? NDK的安裝驗證
完成上面的步驟之后,NDK的安裝到此就完成了,下面我們來驗證一下NDK安裝成功與否. 打開cmd.exe,在里面輸入ndk-build -version,輸出以下內(nèi)容,表示安裝成功。
圖3
?
?
1.6? NDK編譯程序
?
現(xiàn)在我們用安裝好的NDK來編譯一個NDK提供的sample程序hello-jni(我的目錄位于:D:\ADT-bundle\android-ndk-r10b\samples\hello-jni)。
?
(1)??進(jìn)入hello-jni目錄下。
(2)??直接輸入命令ndk-build編譯本地代碼,輸出以下內(nèi)容,表示成功編譯生成動態(tài)鏈接庫,同時我們在hello-jni\obj\local\armeabi路徑下可以看到編譯好的libhello-jni.so。
圖4
?
?
1.7? 驗證hello-jni
(1)??在Eclipse,選擇File--->New--->Project,如下圖:
圖5
選擇Android--->Android Project from ExistingCode,然后選擇Next,如下圖:
圖6
Root Directory選擇hello-jni目錄,且選擇Finish。在這之前記得是要先編譯hello-jni且成功so文件。
?
(2)??打開AVD,然后選擇Run--->Run As--->Android Application,運行界面如下圖所示:
圖7
?
?
?
2.?????Cygwin和CDT
Cygwin:由于NDK開發(fā)大都涉及到C/C++在GCC環(huán)境下編譯、運行,所以在Windows環(huán)境下,需要用Cygwin模擬Linux編譯環(huán)境,下載地址:http://www.cygwin.com/,根據(jù)PC系統(tǒng)是32位還是64位系統(tǒng)來選擇下載對應(yīng)的安裝文件。
?
android-ndk-r7-windows往上的版本都集成了cygwin,因此無需再安cygwin。所謂的集成了cygwin就是說,安裝包解壓后有個ndk-build.cmd命令。配置eclipse直接調(diào)這個cmd命令,完成編譯。
?
CDT:CDT是C/C++在Eclipse平臺下的開發(fā)工具.它提供的功能包括:C/C++編輯器(一些基本的功能:語法高亮顯示,代碼編輯等),C/C++調(diào)試器,C/C++ Launcher,剖析器,內(nèi)容提示,Makefile生成器等。
?
Android官網(wǎng)下載Android的開發(fā)工具ADT(Android Development Tool的縮寫),該工具集成了最新的ADT以及Eclipse,還有一個最新版本SDK。解壓之后就可以用了
?
ADT插件:管理Android SDK和相關(guān)的開發(fā)工具的
NDK插件:用于開發(fā)Android NDK的插件,ADT版本在20以上,就能安裝NDK插件,另外NDK集成了cygwin和CDT插件,我下載的android-ndk32-r10b-windows-x86_64壓縮包解壓后有1.4GB。
?
所以不需要單獨下載cygwin和CDT了。我下載的是谷歌提供的ADT 綁定版,那么它已經(jīng)默認(rèn)安裝好了相應(yīng)的CDT了,打開Eclipse--->Help--->About ADT,如下圖:
圖8
?
3.?????Eclipse中使用NDK
3.1? NDK配置
打開Eclipse,點Window->Preferences->Android->NDK,設(shè)置NDK路徑,例如我的是:D:\ADT-bundle\android-ndk-r10b
圖9
驗證NDK配置是否OK可以導(dǎo)入一個現(xiàn)有的工程來驗證,如1.7節(jié)描述,也可以通過新建Android工程。
?
?
3.2? CDT驗證
在Eclispe中新建一個項目,如果出現(xiàn)了C/C++項目,則表明CDT插件安裝成功了,選擇File--->New--->Project,如下圖:
圖10
參考:
C++開發(fā)安卓、windows下搭建Android NDK開發(fā)環(huán)境
http://www.cr173.com/html/24813_1.html
?
Android之NDK開發(fā)
http://blog.csdn.net/loongembedded/article/details/39718283
?
NDK開發(fā)環(huán)境搭建_r8
http://www.cnblogs.com/baronzhao/archive/2012/07/10/2585181.html
?
Android新版NDK環(huán)境配置(免Cygwin)
http://blog.csdn.net/codezjx/article/details/8879670
?
windows下eclipseandroid-ndkr7b環(huán)境配置
http://blog.csdn.net/xinzheng_wang/article/details/7416543
?
Windos下Android(ADT Bundle)配置NDK的兩種方法------ADT、Cygwin、NDK配置匯總
http://blog.csdn.net/yanzi1225627/article/details/16897877
?
Android NDK環(huán)境搭建
http://jingyan.baidu.com/article/5d6edee22d908799eadeec9f.html
?
總結(jié)
以上是生活随笔為你收集整理的Android下NDK开发环境搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android系统修改硬件设备访问权限
- 下一篇: 用javah 导出类的头文件, 常见的错