如果是说微信这种的话,还真的是被代码塞满了,主要是原生库,然后是 Java 代码,最后才是图片资源。
以官网下载的 armv7 版 apk 说,大小 129MB,原生库(lib)勇夺第一
![](
https://i.loli.net/2020/04/23/JrB6Lm2qsaT4MeC.png)
至于里面的这些库中,各种内部轮子,为了优化和稳定,系统提供的功能又要用自带的库重新实现一遍。最大的 libmmv8 和 libapp 不知道是啥。
![](
https://i.loli.net/2020/04/23/oez2Vk7TOhanECx.png)
play 提供的 arm64 版 106MB,不过还带了个 38MB 的 obb,所以半斤八两。
然后要命的来了,因为 apk 里的 so 是压缩过的,安装时要把它们单独解压出来,所以上面的 armv7 版装完至少占 129MB+146MB 的空间,我还没算 Java 代码 AOT 占用的空间,也就是装完大小就翻倍起步,我宁愿它别压缩原生库。
这应该是体积优化过的结果了,功能太多尽力了。
做得比较差的例如那些网银 APP 就真的是资源没优化了,例如无脑上贴图到所有 view,还是从 ldpi 到 xxhdpi 都有的。不过现在 google 推的 app bundles 有助缓解这个问题。