为什么要减小 APK 体积
- 下载 APK 需要流量,流量需要花钱;
- 安装 APK 需要考虑手机剩余空间
APK 大小
- Raw APK size :生成 APK 的大小
- Download APK size :下载 APK 的大小
- Install APK size :安装到手机上需要的大小
- Update APK size :更新 APK 的大小
APK 里面有些什么
APK 本质是 Zip 压缩包。解压后分为:
- APP code
- 字节码(classes.dex)
- 原生代码 (libs/<arch>/*.so)
- Resources
- res/(drawable、PNG、JPEG、Layout 等)
- resource.arc (styles、ids、strings)-- 没有压缩
- 其他
- assets (binary stream)
- META-INF (签名)
- AndroidManifest
APK 瘦身的方法
- 对代码使用 Proguard
- 去掉用不到的资源
- 对 res 文件使用 Zopfli、WebP、Vectors
- 对 resource 使用 ResConfig 去掉不用的语言包,检测 resource 中的资源大小,根据不同的设备生产不同的 APK
APK 瘦身的工具
- #smallerAPK on Medium(谷歌开发者在 Medium 上的文章)
- ArcBlamer
- APK patch size estimator
- ClassyShark