版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lijia1201900857/article/details/83624344
1、生成so 库。
新建一个项目,勾选 Include C++ support.然后一直next。
在配置好NDK 的情况下,系统会直接生成一个调用C++ 的 例子,直接运行就可以。
配置NDK:https://blog.csdn.net/lijia1201900857/article/details/83576840
下面我们要生成 so 库。详细请看:https://blog.csdn.net/lijia1201900857/article/details/83615409
在CMakeList.txt 中添加如下代码:
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI})
编译运行后,会在jniLibs 中生成相应 abi 的so 库
到此我们就可以使用这些库,供其他项目调用了。
二、调用so 库
新建任意一个项目,Include c++ support 勾不勾无所谓。这里我不勾选
分4步:
1、复制so库拷贝到新项目的libs 目录下
2、app 下的 build.gradle 中添加 链接so库的配置
3、创建和 so中 代码相同包名+ 类名 的类
4、调用
1、将上个项目中生成的 so库 复制到 libs 目录下:
2、app 下的 build.gradle 中添加配置
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
总体结构如下:
3、创建和so中的代码相同包名+类名的类
我们上个项目native 方法 所属的包名 为 com.example.com.jni , 类名为 MainActivity
所以我们需要在新项目中也添加这样一个 类:
新建的MainActivity 类中 添加如下代码(和so库中的调用代码一致):
static {
System.loadLibrary("native-lib");
}
public native String stringFromJNI();
4、调用
然后在新项目的MainActivity.class 中调用
运行结果如下:
over!