包含.so文件时,Android应用捆绑包生成的APK大小巨大

时间:2019-09-11 11:04:44

标签: android android-ndk android-app-bundle

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

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

使用应用程序捆绑包时,似乎根本没有压缩生成的APK。 60MB和37MB几乎没有任何变化地添加到apk大小中,从而使64位臂设备的apk达到了97MB。

当使用bundletool为一台特定设备生成apk时,以及从内部应用程序测试播放商店站点下载该文件时,我都会得到一致的结果。

我是在这里错过什么吗?还是包含.so文件时应用捆绑包不是最好的选择,而再次使用拆分的APK更好吗?

1 个答案:

答案 0 :(得分:4)

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

在构建应用捆绑包时,默认情况下,Play会将原生库(.so)保留在生成的APK中未压缩的状态。尽管这会导致更大的APK文件,但这会导致:

    为用户
  • 较小的下载量,因为通过网络进行压缩可以提高效率
  • 设备上的应用程序尺寸较小,因为Android平台可以将.so文件直接映射到内存中,而不必先将它们提取到目录中(这样就可以将未压缩的.so文件的副本保存在磁盘)。

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

这里是video from Google I/O 2019,在这里他们解释了您可以测量的不同类型的大小(在15:55时)与Play可以帮助减小应用程序大小的区别。

希望有帮助,