Android 应用程序包在包含 .so 文件时生成了巨大的 APK

Android app bundle generated APK size huge when containing .so files

我有一个项目,其中包含几个 cpu 架构特定的 .so 文件 - 最大的是 xwalk 库,v8a 版本为 60MB,v7a 版本为 37MB。

当我们拆分 APK 时,arm-v7a 应用程序 apk 版本约为 38mb,arm-v8a apk 约为 41mb,这是有道理的 - 压缩 lib 将分别产生 23MB 和 20MB。

使用应用程序包时,生成的 APK 似乎根本没有压缩。 60MB 和 37MB 添加到 apk 大小几乎不变,导致 64 位 arm 设备的 97MB apk。

在使用 bundletool 为一个特定设备生成 apk 时,以及从内部应用程序测试 play 商店站点下载时,我得到了一致的结果,returnsapk 也取决于设备。

我是不是漏掉了什么,或者应用程序包在包含 .so 文件时不是最佳选择,最好还是再次使用拆分 APKs?

重要的不是 APK 的文件大小,而是您应用的下载大小您的应用在设备上的大小

当您构建 App Bundle 时,默认情况下,Play 会在生成的 APK 中保留未压缩的原生库 (.so)。虽然这会导致更大的 APK 文件,但这会导致:

  • 用户的下载量较小,因为在线压缩效率更高,
  • 设备上的应用程序更小 因为 Android 平台可以将 .so 文件直接映射到内存中,而不必先将它们解压缩到目录中(从而节省磁盘上未压缩的 .so 文件的副本)。

bundletool实际上提供了一个命令get-size,它可以为您估算下载大小。实际上,当可以应用更好的压缩算法时,这个大小通常会更小,但这是 Play 的最大努力。

这是一个 video from Google I/O 2019,他们解释了您可以测量的不同大小类型之间的差异(在 15:55),以及 Play 如何帮助减小应用程序的大小。

希望对您有所帮助,