以下的所有操作都是基于Macbook,当然Windows上的操作也大同小异。如果你的开发环境是Windows,若遇到不同之处,请问度娘或者Google大神。
好了,废话就不多说了,直接看下面的流程:
一、NDK的下载
1. 下载连接:https://developer.android.com/tools/sdk/ndk/index.html#Downloads
特别说明一下:如果你无法访问Google,请到github上下载一个hosts文件,然后替换你电脑本机的hosts文件。mac和windowns都有hosts文件:
mac下的hosts文件路径:邮件单击Finder,选择前往文件夹,在输入框中输入/private/etc,点击前往。最后将文件/private/etc下的hosts文件替换即可。
windows下hosts文件路径:进入C盘,依次双击开打“windows”→“System32”→“drivers”→“etc”,最后将hosts文件替换即可。
因为Google的i地址会经常改变,如果发现替换了hosts文件还是无法访问Google,那么从github上重新下载一个hosts文件试试。搞IT技术的就要勇于尝试。
好了,这个就说到这里。
2. 执行命令:
chmod a+x android-ndk-r10c-darwin-x86_64.bin ./android-ndk-r10c-darwin-x86_64.bin
即:打卡终端命令窗口,进入到你下载NDK所在的文件目录下,依次输入以上两行命令。目的是将.bin文件解压成文件夹,否则你无法直接使用。
二、在Eclipse中配置NDK插件
操作步骤:Eclipse-->偏好设置(preference)-->Android-->NDK,在NDK Loactiion输入框中选择刚解压的NDK文件夹,点击Apply/OK即可。
这样NDK的配置就大功告成了,是不是很简单呢?
三、NDK编译生成.so文件
1. 右键单击你所选的Android项目,然后选在列表中Android Tools里面的Add Native Support…,然后在输入框中任意输入你的.so文件名称,点击Finish即可。
2. 之后会在你的项目中自动生成jni文件夹,并且文件夹里面有一个Android.mk文件和一个.c(或者.cpp)文件。说明:.c文件是c语言编写的,.cpp是c++语言编写的,如果生成的是.cpp文件,你也可以直接将此文件修改为.c文件,这个问题不大。(若想了解这两个文件的里面的代码内容,请下载文档:http://pan.baidu.com/s/1pJn3Eun, 密码:gbkr。打开下载的word文档,command+F然后输入关键字NDK检索到相关的内容进行了解。)
3. 写好.c或者.cpp文件之后,运行项目就会自动编译,编译成功会在libs/armeabi/目录下生成一个.so文件。文件的名字就是libXXX.so。(XXX就是上面你自己输入的.so文件的名称)
四、如何调用JNI接口
1. 先上一个Demo:https://github.com/lzyickobe/UnInstallDemo/,这个Demo就是应用如何监听本身的卸载。
2. 再上一个对此Demo的详细解说文档:http://lzyblog.com/2015/01/09/Android%E5%BA%94%E7%94%A8%E7%9B%91%E5%90%AC%E8%87%AA%E5%B7%B1%E6%98%AF%E5%90%A6%E8%A2%AB%E5%8D%B8%E8%BD%BD%EF%BC%8C%E5%81%9A%E5%8F%8D%E9%A6%88%E7%BB%9F%E8%AE%A1/
3. 特别注意的地方:当调用方法System.loadLibrary("")来加载.so文件的时候,要去掉.so文件前面的lib前缀,否则会报异常:UnsatisfiedLinkError。
例如:System.loadLibrary("libXXX")是错误的写法;而System.loadLibrary("XXX")是正确的写法。
其他的也没啥可说的了。类似这样的总结性文章,我写得很少,可能有些地方写得让大家觉得不是特别清楚。请大家留言或者发送到邮箱:dengweijunben@gmail.com。欢迎大家随时沟通交流,这样才能共同进步。
原文地址:http://blog.csdn.net/dengweijunkedafu/article/details/45335117