一、 jni环境搭建
借助Android Studio可以快速构建支持jni的项目。
New Project 选择 Native C++:
native-cxx-01.png
好了!看下项目的特殊之处,首先看下app目录下build.gradle文件的配置:
native-cxx-02.png
上面的配置指定了build出来的so包支持哪些cpu类型;下面的配置指定的是CMakeLists.txt的文件相对路径,以及CMake库的版本号。
二、 CMakeLists文件
系统生成的CMakeLists.txt文件内容如下:
native-cxx-03.png
cmake_minimum_required 指定了CMake的最低版本
add_library 第一个参数指定了编译生成的so的名字,第三个参数即编译的c文件,也即需要编写的源文件
find_library 引入系统的库,默认只引入了log库
target_link_libraries 只引入库还不行,还需要连接自己编写的库和系统的库
三、 编写c文件
3.1 编写native文件
public class JNICompute {
public native int add(int num1, int num2);
}
在add方法上 alt + Enter键 会自动在native-lib.cpp下生成c代码:
native-cxx-04.png
四、 生成so
执行build命令,在app/build/intermediates/cmake/debug/obj/armeabi-v7a下已经可以看见lib-xxx.so格式的文件了,如果是本项目使用,不需要任何操作,但是如果是其他项目要用,需要拷贝so文件到其他项目的libs下,并且需要在完全相同的路径下拷贝过去声明Native方法的java文件。
build完就可以新建JNICompute实例调用native方法了。