android - 未从 .apk 安装 ARMv8 库

标签 android android-ndk

我有一个包含 native 二进制文件的应用程序。目前,我们只有 ARMv5 和 x86 二进制文件。有了这些,我们将二进制文件放入 src/main/jniLibs/armeabi/libsyncthing.sosrc/main/jniLibs/x86/libsyncthing.so,这在所有设备。

我们现在要添加一个额外的 ARMv8 二进制文件,放置在 src/main/jniLibs/arm64-v8a/libsyncthing.so 中。根据this guide , 这是正确的子文件夹。但是,当我在 LG G4(支持 ARMv8)上安装 apk 时,/lib/ 文件夹中没有安装任何二进制文件,应用无法运行。

我在这里做错了什么?

在这里你可以看到二进制文件都包含在apk中:

apk contents

您可以在 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/

相关文章:

android - 在 Android NDK 中使用一个简单的 C++ 类

android webview 不使用 WebViewClient 显示视频

java - 将 unsigned char* 作为 byte[] 从 C++ 传递到 java 的最有效方法

android - 无法统计 `./libs/armeabi-v7a/gdb.setup' : No such file or directory when running ndk-gdb

android - 如何为 alertDialog 创建自己的主题?

android - 项目中添加的libsupportjni.so文件

android ANativeWindow_lock api 不适用于 GLSurfaceView

Android,共享库依赖

java - 如何知道邮件是否真的发送?

java - 格式错误的 json 导致 java.lang.RuntimeException