我有一个包含 native 二进制文件的应用程序。目前,我们只有 ARMv5 和 x86 二进制文件。有了这些,我们将二进制文件放入 src/main/jniLibs/armeabi/libsyncthing.so
和 src/main/jniLibs/x86/libsyncthing.so
,这在所有设备。
我们现在要添加一个额外的 ARMv8 二进制文件,放置在 src/main/jniLibs/arm64-v8a/libsyncthing.so
中。根据this guide , 这是正确的子文件夹。但是,当我在 LG G4(支持 ARMv8)上安装 apk 时,/lib/
文件夹中没有安装任何二进制文件,应用无法运行。
我在这里做错了什么?
在这里你可以看到二进制文件都包含在apk中:
您可以在 this PR on Github 中查看完整代码.二进制文件不包含在那里,但可以使用 ./gradlew buildNative
生成。
最佳答案
我终于自己弄明白了。问题是我在做
binary = context.getApplicationInfo().dataDir + "/lib/libsyncthing.so";
事实证明,ARMv8 库存储在不同的位置,因此失败了。相反,我不得不使用这段代码:
binary = context.getApplicationInfo().nativeLibraryDir + "/libsyncthing.so";
关于android - 未从 .apk 安装 ARMv8 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39478884/