Android NDK开发环境搭建记录
导言
由于项目需要使用NDK开发,所以用这个博客来作为NDK记录,顺便试一试MarkDown
环境
系统:windows 7
IDE:eclipse
工具/插件:android-ndk-r10d
开始搭建
1. 下载
android-ndk-r10d:google目前最新的ndk包是r10d,使用这个包可以免去配置cygwin(一个在windows中也能使用linux命令的工具)的烦恼,建议百度自行下载(google封得太厉害);
com.android.ide.eclipse.ndk.xxx(可选):从google下载的最新的ADT(v23),有可能会没有自带的NDK插件,这个时候就需要主动下载这个插件,并且添加到eclipse\plugins文件夹内,重启eclipse
2. 安装
(1)配置NDK路径:把android-ndk-r10d解压到想要的路径后,在eclipse->Windows->Preferences->Android->NDK中设置成NDK包解压的路径
(2)配置环境变量:新建系统环境变量ANDROID_NDK_ROOT(名字随意),值为NDK包解压的路径;然后再PATH变量值前,添加 %ANDROID_NDK_ROOT%;
(3)验证安装结果:在cmd中输入ndk-build -version,看是否输出ndk版本
使用NDK
1.编译hello-jni.so
在google提供的NDK包中,包含了一个简单易懂的NDK操作例子hello-jni,其路径在[[NDK-Path]\samples\hello-jni。
打开cmd并切换路径到[NDK-Path]\samples\hello-jni,此时直接执行“ndk-build.cmd”,即会自动按照hello-jni内的Android.mk和Application.mk文件进行编译,并生成.so文件到libs文件夹内
在上面的例子中,我们可以看出NDK也是使用makefile组织编译任务的,“.so”文件直接又“.c/.cpp”文件(当然也包括C/C++的头文件“.h”)。但是独立使用NDK提供的工具在命令行里面执行编译任务,对于不熟悉命令行操作的朋友来讲确实比较麻烦,下面介绍怎样使用eclipse+NDK的方法实现快速开发。
2.在eclipse中使用NDK!
(1)新建Android Application Project,NDK-Test
(2)在工程中创建jni文件夹,并创建test.cpp,具体在NDK开发要注意的源码问题这里就不展开叙述了。拷贝hello-jni内的Android.mk和Application.mk到jni目录。根据工程中的源码,修改为自己所需的.mk文件。
文件 说明 Android.mk 工程的主要的配置makefile文件,定义了ndk-build指令如何编译我们的C/C++源码 Application.mk 定义ndk-build针对何种CPU架构编译源码
(3)打开[工程]->Properties->Builders->New->Program
自定义我们编译NDKTest工程用的Builder并确认
属性 说明 Location 编译该工程的脚本或工具的路径,这里我们使用ndk-build.cmd的路径 Working Directory 该Builder作用的工程目录
(4)上述完成后,基本就可以正常的做native开发了。
技巧1:利用javah生成java文件中native方法的头文件
利用NDK做native开发时,我们总需要在根据Java文件中对native方法的声明,来编写具体.h或.c/.cpp文件中的方法的名字(必须遵从NDK方法命名规则),下面利用javah可以快速根据java文件的声明情况生成相应的.h文件
(1)如图所示点击“External Tools Configurations”配置专用的Builder
(2)新建Builder并配置如下
属性 | 说明 |
---|---|
Location | 编译该工程的脚本或工具的路径,这里我们使用javah.exe的路径 |
Working Directory | 该Builder作用的工程目录,这里我们只针对工程的src文件夹作为javah构建.h文件的目录(因为.java文件都在src文件夹内) |
Arguments | 编译工具的配置参数,这里写“-d ${project_loc}\jni -jni ${java_type_name}”。 |
-d ${project_loc}\jni :表示.h文件生成的目标路径
-jni ${java_type_name}:表示.h文件方法声明的规则