我使用两个独立的共享库,使用正常的gradle工作正常。我使用以下gradle命令包含库:
sourceSets.main
{
jni.srcDirs = []// This means that ndk-build.cmd needs to be invoked from command line
jniLibs.srcDirs "src/main/libs" //include other libraries
}
我需要开始编译两个库中的一个,所以我转到实验gradle。我让这个对我正在建造的图书馆工作得很好。但是,当我去添加预编译的共享库时,我遇到了java.lang.UnsatisfiedLinkError的崩溃:找不到我的JNI方法的实现。我没有更改包名称或共享库。
当我跑步时
jar xvf app-release.apk
我看到我的共享库出现在文件列表中,因此它被APK版本接收。如果库在APK中,可能是UnsatisfiedLinkError的来源是什么?将预构建的.so文件包含在NDK项目中的步骤是什么。 NDK项目代码不会调用额外的库,只调用java代码。
答案 0 :(得分:0)
您应该从java代码手动加载库。
System.loadLibrary("yourlib");
不要忘记处理异常,因为loadLibrary
可以抛出异常。这很重要,因为异常消息会显示路径,它试图找到您的共享库。另外,请确保您的库已添加到 apk 中。然后,请确保为不同的ABI编译了共享库,因为armeabi库不能在x86手机上运行。
Here您可以找到使用gradle-experimental插件向您的项目添加库的示例,因此它会添加到您的 apk 。