一、下载Android NDK
您可以下载NDK r8 for Windows或NDK r8 for Windows安装包,下载地址:http://developer.android.com/sdk/ndk/index.html
下载后解压到你喜欢的路径,例如笔者的路径: D:\Develope\Android\android-ndk-r8。注意跟Android安装一样,目录不要有空格。
Android NDK包含build,docs,platforms,prebuilt,samples,sources,tests,toolchains,GNUmakefile,ndk-build,ndk-gdb及readme等内容.samples下面包含几个实例开发演示项目,第一次接触NDK开发,建议先从示例开始。下面先看一下编译环境配置。
二、下载Cygwin
由于NDK开发都涉及到C/C++在GCC环境下编译、运行,所以在Windows环境下,需要模拟Linux模拟编译环境。下载地址:http://www.cygwin.com/
下载后是个setup.exe文件,使用过程如下:
第一步:运行setup程序,第一步图略,直接点击Next进入下一步。
第二步:选择安装方式,第一次可以采用Direct Connection在线下载安装,如有现成的离线包,可以选择离线安装(Install from Local Directory)。
第三步:选择安装目录,比如D:\Develope\Cygwin,注意此目录是指Cygwin最终的安装目录,不是下载文件暂存目录。
第四步:设置本地包暂存路径
暂存目录默认是放到setup.exe的同级目录下,下载后名字类似ftp%3a%2f%2fcygwin.mirrors.pair.com%2f这样格式。
第五步:设置网络连接方式
第六步:选择下载站点地址
起初尝试几个看哪个速度快就用哪个地址(如果感觉不快就点取消,再次来过)。
最好选择.cn的地址,这样下载最快。
第七步:等待加载安装项载入,选择安装项
我们编译NDK,在默认设置下,只需选择Devel(点击列表中Devel,将后面的Default改为Install,图中箭头所示),其它均为默认状态。
也可以按需选择以下几个组件安装,都在Devel节点下:
autoconf2.1
automake1.10
binutils
gcc-core
gcc-g++
gcc4-core
gcc4-g++
gdb
pcre
pcre-devel
gawk
make
第八步:等待下载完成
下载完成时间决定于你选择的安装包数量及网络连接速度,比如按照本文默认的选择方式,可能需要4-5个小时,下载后压缩包约750M,下载完成后会自动安装到上文设置的安装目录。
提醒:第一次下载完成后,最好把下载的包目录做个备份,下次安装同样的环境可以直接使用离线安装方式(第二步中选择本地安装)。
三、验证Cygwin环境
安装完成后,先运行Cygwin一次(Cygwin.bat),以便创建一些用户环境文件,分别输入:make -v和gcc -v.如果检测成功,会有make和gcc相关版本信息打印出来,如下图。
四、配置NDK路径设置
在Cygwin安装目录下你会发现有一个home目录,如果你是Administrator用户登录就会在home目录下创建一个Administrator目录.如果是其他用户则会创建其他用户目录名.
在D:\cygwin\home\Administrator目录下找到".bash_profile"文件,使用文本编辑器编辑它.
ndk=/cygdrive/d/Develope/Andriod/android-ndk-r8
export ndk
其中ndk=/cygdrive/<你的盘符>/<android ndk 目录> ,"ndk"这个名字随便起,以后经常用不要太长。
重启cygwin,输入:cd $ndk 如果如下图所示,证明环境变量设置成功了。
可进入ndk对应目录说明设置OK。
五、编译演示工程
现在就可以编译相关NDK工程了(一些用c/c++写的程序),编译方法如下:
1、在cygwin命令行下,进入android项目工作目录:
cd $ndk
2、依次进入samples\hello-jni目录,(完整路径示例: D:\Devlope\Andriod\android-ndk-r8\samples\hello-jni)
3、运行$ndk/ndk-build
注意:该命令$ndk和/ndk-build是连接到一起的,中间没有空格,实际使用时是打入完整的$ndk/ndk-build,不要只打ndk-build。
4、正常编译完成后会在你的项目libs/armeabi目录下生成对应的 .so文件。如果存在.so文件,那么恭喜你,你的ndk也运行正常了。
5、总结一下,相信多数同学也看出来了,$ndk是调用我们之前设置的环境变量,ndk-build是调用ndk的编译程序,通过环境变量的方式来减少我们每次都要输入一大串目录路径字符的麻烦,在编译程序时进入到程序目录里直接键入$ndk/ndk-build就可以编译了。至于编译的程序,我测试了一下,准备好以下目录和文件就可以编译了,如下表所示:
程序总目录 |
jni目录(名字不可改)
|
AndroidManifest.xml文件(随便从别的工程拷一个就可以,但是Activity要改成自己程序的) |
Android.mk(makefile文件,这个得根据自己的程序编写了) |
Hello-jni.c(你编写的c程序文件,如果是c++就是cpp文件) |
摘自:http://www.cnblogs.com/guenli/archive/2012/07/04/2576078.html又在其内容上做了一点编辑。
导入的HelloJni项目之所以能正常运行,是因为之前用cygwin工具编译出了HelloJni项目中的.so文件,即编译了jni文件夹的内容。
用cygwin命令行调用ndk-build的方式编译jni(.so文件),相对来说,比较麻烦。
后续会讲解一下如何用eclipse编译.so文件。