Android JNI环境搭建(一)
最近学了很多,一直想写一个关于NDK的博客。但发现无从入手,在这里
我首先感谢@change0写的AndroidNDK开发(一)入门,确定写作的思路,个人
觉得写得很好,值得大家去读读。
接下来进入正题,我将分为如下方面,让大家从0基础搭建AndroidStudio
Ndk发开环境:
1)认识ndk
2)下载ndk
3)配置ndk
5)验证ndk环境安装
1.认识NDK
1)NDK是什么?
NDK:(native development kit)是一系列工具。它帮助开发者快速开发
C/C++的动态库,并将自动so和java应用一起打包成apk.
NDK集成了交叉编译,并提供相应的mk文件隔离CPU、平台、ABI等差异,开
发人员只需简单修改mk文件(指出"那些文件需要编译","编译特性要求"等),就
可以创建出动态库
2)为什么使用NDK?
(1) 代码的保护。由于apk的java层代码很容易被反编译,而C/C++库反
编译较大
(2) 可以很方便地使用现存的开源库。eg:OpenCV
(3) 提高代码的执行效率。将要求高性能的应用逻辑使用C开发,从而
提高程序执行效率
(4) 便于移植。用C/C++写得库可以方便在其他的嵌入式平台上再次使用
2.下载NDK
下载NDK这里主要介绍两个种方式
1)网址下载: http://wear.techbrood.com/tools/sdk/ndk/
不过通过方法一定修改local.properties文件,在里面添加:
//后面改成自己下载后解压的路径名
ndk.dir=I:\\Android\\sdk\\android-ndk-r13
2)AndroidStudio下载:如下图所示
下载图示:
3.配置NDK
这里主要配置:javah-jni、ndk-build、ndk-build clean
主要通过:Settings--->Tools--->External Tools
1)Javah–jni配置如图所示:
2)ndk-build配置如图所示:
3)ndk-build clean 配置如图所示:
4.验证安装
由于接下来的过程,可能有的人不太理解,或者不知到这一步怎么来的,我采取
尽可能采用图片展示,最后我将把这个demo上传到github上。为大家参考
1)新建工程时,选择支持C++,其他默认就行
2)在新建中app/build.gradle中加入:
sourceSets.main.jni.srcDirs = []
//禁止自带的ndk功能
sourceSets.main.jniLibs.srcDirs = ['src/main/libs','src/main/jniLibs']
//重定向so目录为src/main/libs和src/main/jniLibs,原来为src/main/jniLibs
注意:这里这样做,是有原因的。还记得我们配置的ndk-build时:
NDK_LIBS_OUT=$ModuleFileDir$/src/main/jniLibs 这个
就是指定了,编译生成动态库.so文件存放的位置
3)在src/main下创建一个目录角jni,并在该目录下的添加
application.mk和android.mk文件
4)编译生成头文件
5)新建源文件
6)构建so动态库:此时选择Tools--->External Tools-->ndk-build
如果都正确的话,会在jniLibs目录下生成相对应的so库文件
7)调用本地方法
8)最后附上该demo的github地址:
https://github.com/whjlingtu/Android_NDK_Demo.git
图片显示
1.app/build.gradle中添加:
2.android.mk中内容:
3.application.mk中内容:
4.生成头文件:
5.新建源文件
6.生成so文件
7.调用本地方法
参考资料:
@change0 :借鉴写作思路
水之笔记:ndk理论知识