只有 arm64-v8a 二进制文件的 Apk 将无法安装
Apk with only arm64-v8a binaries will not install
我有一个应用程序嵌入了 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
如果我将 "fat" apk 与 armv7 和 arm64-v8a 一起使用,那么它将默认使用 armv7 .so。
如有任何帮助,我们将不胜感激!
通过 Android 错误跟踪器我找到了解决方案。问题是我使用的是 renderscript 版本 19,它会自动创建 .bc 文件,这反过来又使包管理器忽略了 arm64 库。将其提高到 21 并启用 renderscript compat 使其工作。
我有一个应用程序嵌入了 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
如果我将 "fat" apk 与 armv7 和 arm64-v8a 一起使用,那么它将默认使用 armv7 .so。
如有任何帮助,我们将不胜感激!
通过 Android 错误跟踪器我找到了解决方案。问题是我使用的是 renderscript 版本 19,它会自动创建 .bc 文件,这反过来又使包管理器忽略了 arm64 库。将其提高到 21 并启用 renderscript compat 使其工作。