如果在创建完CMakeLists.txt后,C++文件已经准备就绪,但是你发现无论怎么build或者是run这个项目,当你在类中System.loadLibrary("xxxx-lib");时,就是一直报错,

java.lang.UnsatisfiedLinkError :dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.houde.jni-2/base.apk"],nativeLibraryDirectories=[/data/app/com.houde.jni-2/lib/arm64, /data/app/com.houde.jni-2/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]] couldn't find "libnative-lib.so"

说找不到这个so文件,当你去build文件夹下面去找这个so的时候,确实没有生成,这是因为这个CMakeLists.txt文件没有在build.gradle中关联,在build的时候不会进行编译C++文件的操作,可以使用下文的方法进行配置:

方法一:

android NDK 不生成SO库采坑

方法二:

手动配置Gradle

android {
  ...
  defaultConfig {...}
  buildTypes {...}
  // Encapsulates your external native build configurations.
  externalNativeBuild {
    // Encapsulates your CMake build configurations.
    cmake {

      // Provides a relative path to your CMake build script.
      path "CMakeLists.txt"
    }
  }
}

其实这两种方法是一样的,方法一也是在build.gradle中增加一个externalNativeBuild.

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-27
  • 2021-04-18
  • 2022-12-23
  • 2021-07-22
  • 2022-01-15
猜你喜欢
  • 2021-09-27
  • 2022-12-23
  • 2021-12-15
  • 2021-07-15
  • 2021-06-10
  • 2022-12-23
相关资源
相似解决方案