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



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

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

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

当使用捆绑工具为一个特定设备生成apks时,以及从内部应用程序测试Play商店网站下载时,我得到了一致的结果,该网站也根据设备返回apk。

我在这里错过了一些东西,还是应用程序包在包含 .so 文件时不是最佳选择,最好再次使用拆分的 APK?

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

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

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

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

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

希望有帮助,

相关内容

最新更新