开发环境:win10 androidstudio 3.1.2 NDK17
1
NKD 开发请参考:blog.csdn.net/ezconn/arti…
2
完成 1 之后,打包安装好,运行时,出现:UnsatisfiedLinkError 异常可能是如下原因之一:
1)NDK 17 版本太高,换成 NDK16 就好了,可能是高版本对不再支持 ndk-build 编译
2).h 文件名或者里面的函数名和 Java 里面的本地方法(Native 修饰的方法)路径是否一致(静态注册需要一致)
3).so 库放置位是否需要在 build.gradle 里面配置;例如:放在项目的 app 目录下面和 src 同级的 libs 目录下,这就需要配置
sourceSets.main {
jniLibs.srcDir 'libs'
}
放在项目的 main 目录下的和 java 同级的 jniLibs 目录下就不需要配置以上类似的代码
4)加载生成的动态库的文件名,生成. so 时指定的名字,Android.mk 中 LOCAL_MODULE := Java2c 三者是否一致;例如我的都是 Java2c;
//加载生成的.so
static {
System.loadLibrary("Java2c");
}
//ndk编译生成.so文件
ndk{
moduleName "Java2c" //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。
}