NDK配置
打开SDK Manager,按照如下配置。
创建工程,选择Native C++
编写natvie方法
在Java目录下创建类TestLib,编写接口。将光标移到方法名上,Alt+Enter,选择Create JNI function for getHello,自动在.cpp文件中创建函数。
在.cpp生成的函数中,返回一个字符串
打包配置
按照需求配置生成不同abi的库
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
在CMakeLists.txt中配置打包so的路径
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/jniLibs/${ANDROID_ABI})
测试
在Java代码中,使用System.loadLibrary("testndk")方法来加载so库,并调用其方法。
编译so
Build -> make Project
将TestLib.java、生成的so拷贝到工程目录,Test.java的包名必须保持不变
打包多个文件
在cpp目录下新建hello.c,test.c,test.h文件
在java文件中声明native方法,在hello.c中调用test.c中test()方法。
CMakeLists.txt中将所有要打包进so的文件加入add_library中
执行make project就生成so了。