【问题标题】:Apk with only arm64-v8a binaries will not install仅带有 arm64-v8a 二进制文件的 Apk 将无法安装
【发布时间】:2017-09-20 09:46:50
【问题描述】:

我有一个应用程序,它嵌入了 v8 的原生版本以及通过 cmake 进行的一些扩展。到目前为止,它是为 x86 和 armv7 编译的,然后会剥离 Crashlytics 引入的其他架构的所有共享库。

我现在为 arm64-v8a 添加了一个构建版本,但无法让设备或仿真器实际执行 64 位代码。不会安装仅包含 armv8 库的 apk:

# unzip -v app/build/outputs/apk/debug/app-debug.apk |grep lib
13863240  Defl:N  4904804  65% 00-00-1980 00:00 7b2e5eef  lib/arm64-v8a/libbgjs.so
   13648  Defl:N     4168  70% 00-00-1980 00:00 2b60e8f9  lib/arm64-v8a/libcrashlytics-envelope.so
  530392  Defl:N   202134  62% 00-00-1980 00:00 2d08ed8e  lib/arm64-v8a/libcrashlytics.so
  149248  Defl:N    59350  60% 00-00-1980 00:00 957899e1  lib/arm64-v8a/libmyrmecophaga.so
  116416  Defl:N    51520  56% 00-00-1980 00:00 73a9138b  lib/arm64-v8a/libunwind-crashlytics.so

# adb install app/build/outputs/apk/debug/app-debug.apk 
Failed to install app/build/outputs/apk/debug/app-debug.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]
# adb logcat
09-20 11:40:09.716 3640-3764/? W/NativeHelper: Failure copying native libraries [errorCode=-113]
09-20 11:40:09.716 3640-3764/? E/PackageInstaller: Commit of session 1828012220 failed: Failed to extract native libraries, res=-113

如果我同时使用带有 armv7 和 arm64-v8a 的“胖”apk,那么它将默认使用 armv7 .so。

任何帮助将不胜感激!

【问题讨论】:

    标签: android android-ndk arm64


    【解决方案1】:

    通过查看 Android 错误跟踪器,我找到了解决方案。问题是我使用的是渲染脚本版本 19,它自动创建了 .bc 文件,这反过来又使包管理器忽略了 arm64 库。将其增加到 21 并启用 renderscript compat 使其工作。

    来源:https://issuetracker.google.com/issues/37134362

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 2017-06-17
      • 2020-12-14
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      相关资源
      最近更新 更多