Android NDK 主要是为了重用一些(C/C++)代码,通过NDK编译成*.so的动态链接库,然后通过SDK打包进apk进行使用。它是 Android SDK 的一个补充,所以要先安装需要的 SDK 版本。编译android 的本地代码(C/C++)需要在 Linux 环境下进行,而在 Windows 下可以借助 Cygwin 实现一个交叉编译环境。
一、安装 Cygwin
1、下载Cygwin
2、运行 Cygwin 安装程序,尽量选择国内的镜像,网上也有工具可以测试哪个镜像比较快。
然后选择需要的包进行安装,根据前人经验至少要安装autoconf2.1、automake1.10、binutils、gcc-core、gcc-g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make 12个包。当然也可以把 Devel-Install 下的包都安装,不过就是有点大,大概要4-5个小时。
3、测试安装是否成功:
运行cygwin,在弹出的命令行窗口输入:cygcheck -c cygwin命令,会打印出当前cygwin的版本和运行状态,如果status是ok的话,则cygwin运行正常。
然后依次输入gcc –version,g++ --version,make –version,gdb –version进行测试,如果都打印出版本信息和一些描述信息,那么cygwin就安装完成了!
二、下载配置NDK
1、在cygwin的安装目录,找到一个home\<你的用户名>\.bash_profile文件,打开在文件最后添加 NDKROOT=/cygdrive/<你的盘符>/<android ndk 目录>
例如: NDKROOT=/cygdrive/e/android/android-ndk-r6 export NDKROOT
注意:添加的时候不能使用回车符,可以使用 tab 分隔符
2、打开cygwin,输入cd $NDKROOT,如果输出上面配置的/cygdrive/e/android/android-ndk-r6信息,则表明环境变量设置成功了。
三、编译一个NDK程序
使用 NDK 中 samples 目录下的 hello-jni 进行编译测试:
1、运行cygwin,输入命令cd $NDKROOT,就会定位到/cygdrive/e/android/android-ndk-r6,然后输入cd samples/hello-jni定位到 /cygdrive/e/android/android-ndk-r6/samples/hello-jni
2、 输入$NDKROOT/ndk-build,编译成功后,会生成一个libs目录,把编译生成的 *.so 动态链接库就在里面,如果有 so 文件则表明 NDK 一切 OK 啦!
四、使用编译的 so 链接库
1、打开 eclipse ,使用 create project from existing source 方式新建 android project,location 选择 hello-jni 文件夹
2、编译执行 android project,就会在android 虚拟设备上输出 jni/hello-jni.c 中设置的内容 hello from jni!
3、到此 SDK + NDK 的开发环境的配置就全部完成。
附:Android NDK 开发的一般步骤:
1、JNI 接口设计
2、使用 C/C++ 实现本地方法
3、生成动态链接库(*.so)
4、将动态链接库复制到 Android SDK 编写的 Java 工程,运行 Java 程序。
用 Eclipse 平台进行 C/C++ 开发:http://www.ibm.com/developerworks/cn/linux/opensource/os-ecc/