Android ndk开发出现UnsatisfiedLinkError

770 阅读1分钟

开发环境: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库。
 }