RZMars个人Blog地址: http://www.rzmars.com
最近有不少人问我NDK的问题, 看来嵌入式也要爆发了,今个分享下Android NDK编程的小白教程吧。
Mac下为例:
在Mac下面如何搭建进行Android NDK编程环境:再网上有不少答案,这里给大家一个全套的解释:
1.首先我们要去下载NDK下载地址:https://developer.android.com/tools/sdk/ndk/index.html
我的上64 bit的下载红圈的压缩包
2.解压下载完成的NDK环境包,我们得到这样的目录结构:
然后进入到ndk目录看看:
其中最主要的一个常用命令就是 ndk-build.
3.接着我们为NDK设置环境变量。让ndk-build 命令随处可用,和配置java 环境变量一致:
在命令行中输入:pico .bash_profile
然后复制下面的环境设置,zt,
export PATH=${PATH}:/Users/RZMars/Android/
android-ndk-r9b
A_NDK_ROOT=/Users/RZMars/Android/android-ndk-r9b
export A_NDK_ROOT
按键 :control+x 保存,然后重启配置资源 或者重启一个终端:输入 ndk-build
出现以上提示 说明配置很ok!!
4.环境已经配置完成,接下来开始实战NDK编程:打开eclipse 新建项目:
目录下没有ndk ,jni什么的,很正常 因为我们还没又真正的开始NDK编程:
5.在项目的根目录添加一个文件夹,命名为jni
并且拷贝android-ndk-r9b/samples/hello-jni/jni/Android.mk文件
到jni目录
我们吧so文件名字改为myndk
6.接下来我们新建一个NdkUtils.class,用于本地接口的访问
再这个类中添加2个方法,不解释。
static {
System.loadLibrary("myndk");
}
public native static int getAgeFromJNI();
public native static String getNameFromJNI();
PS:完蛋截图才发现错了,大家把private 改成public 吧,不好意思 手误。。
打开终端:javah 报错的你就吧java的环境设置好吧:
使用javah 为我们写好的NdkUtils类编译.h 的头文件
看清楚这里很关键 很多网上的教程都说不清楚:
6.1打开终端:进入到项目的目录classes目录,很多人说上bin目录 那上在java环境下,android是再classes目录下,反正能再当前目录看到你的包名就对来eg:com.rzmars.app ls 看到 com 就上对的 (也许 哈哈)
6.2使用javah把NdkUtils的头文件生成到jni目录下
javah –d outPath packageName+className
ok ,打开项目的jni目录是不是多来一个.h文件 ,这就是c的同文件。我们现在实现这个头文件:其实我们并不要这么做,因为你上初学者 你就必须知道整个过程和原理:
这样做的目的就是为了写android的人更好的和写c的人沟通,这样写接口的人就无法抵赖来哈哈,当然这样做的目还可以减少开发者的粗心错误,是不是?
7.那么我们接着实现这些头文件的方法吧:新建一个myndk.c文件 把这个名字填写到Android.mk 中 。这里我们和头文件脱离开来 ,同文件就告诉我们一件事 :有哪些方法需要实现,正常不是这样做的,写c的都就知道来。
我们复制头文件中的方法&实现他们:
8.实现以上方法开始编译jni咯。
打开终端进项目的根目录
eg:cd /Users/RZMars/WorkSpace/AndroidNDK/
输入命令 ndk-build
刷新项目目录是否多了一个obj目录? 哈哈。Ok来了
9。
世界使用NdkUtils中的方法
10.运行程序:
欢迎登录: http://www.rzmars.com
Twitter:https://twitter.com/RZMars
Facebook:https://www.facebook.com/RZMars110
stackoverflow: http://stackoverflow.com/users/1247816/rzmars
QQ/微信:9942037
有问题大家一起讨论!!!!
拜拜!!!!!!!!!!!!!!!!!!!!!!!!!!