如果在创建完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++文件的操作,可以使用下文的方法进行配置:
方法一:
方法二:
手动配置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.