我有一个项目,其中包含几个特定于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更好吗?
答案 0 :(得分:4)
重要的不是APK的文件大小,而是应用程序的下载大小和应用程序的设备上的大小
在构建应用捆绑包时,默认情况下,Play会将原生库(.so)保留在生成的APK中未压缩的状态。尽管这会导致更大的APK文件,但这会导致:
bundletool实际上提供了一个命令get-size
,该命令可以为您估计下载大小。实际上,当可以应用更好的压缩算法时,此大小通常会更小,但这是Play的最大努力。
这里是video from Google I/O 2019,在这里他们解释了您可以测量的不同类型的大小(在15:55时)与Play可以帮助减小应用程序大小的区别。
希望有帮助,