Android NDK 运行错误:java.lang.UnsatisfiedLinkError: Couldn't load XXX indLibrary returned null

来源:互联网 发布:regina知乎 编辑:程序博客网 时间:2024/06/05 09:52

Process: com.example.hellojni, PID: 10741

java.lang.UnsatisfiedLinkError: Couldn'tload hello-jnifrom loader dalvik.system.PathClassLoader[DexPathList[[zip file"/data/app/com.example.hellojni-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.hellojni-1, /vendor/lib, /system/lib]]]: findLibrary returned null



方法1

原来是Android Studio的JNI默认路径是这样的

//目录结构一定要改成这个样子|---src     |---main           |---jniLibs                  |---arm64-v8a                         |---libhello-jni.so                  |---armeabi                         |---libhello-jni.so                  |---armeabi-v7a                         |---libhello-jni.so                  |---x86                         |---libhello-jni.so                  |---x86_64                         |---libhello-jni.so                  |---mips                         |---libhello-jni.so                  |---mips64                         |---libhello-jni.so
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

目录结构一定要改成上图的样子,详细的修改方法请转移 | Android Studio 添加动态库os文件的方法


方法2[推荐]

直接修改build.gradle文件如下:

android {    sourceSets {        main {            jniLibs.srcDirs = ['libs']        }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

其实两种方法的原理是一样的。

方法1是:直接将so文件放到了Android Studio 的默认路径src > main > jniLibs

方法2是:修改jniLibs的默认路径为libs

1 0