常规
- 删除无用资源文件
- Lint 静态检测 - Android Studio自带
- Code Inspect - Android Studio自带
- 图片压缩
- tinypng / 使用TinyPngPlugin一键压缩
- 转换成webp - Android Studio 自带
- 混淆字节码文件 Proguard - minifyEnabled
- 缩减资源 Proguard - shrinkResources
- so文件缩减
- 只提供需要的,例如:armeabi-v7a/armeabi
- 移除未使用的备用资源
- 国际化: 只提供常用的几种语言
- 图片适配: 只提供常用的几种分辨率,例如:xxhdpi
- 定期删除无用功能代码,例如:周期性活动、节日型活动等
进阶
- 混淆资源文件 AndResGuard
- dex文件是打包中的产物,redex是facebook开源的分包优化方案。 可以参考:ReDex。
- 动态加载so文件 - facebook开源的SoLoader
- 插件化
极致
- DebugItem - 去除debug信息与行号信息, 可以参考支付宝的这篇 支付宝 App 构建优化解析:Android 包大小极致压缩
- R Field内联 - 字节开源的shrink-r-plugin,还有滴滴开源的booster
- 图片着色器 - 针对同图不同色的处理,可以使用tint,比如原本是一个黑色的返回icon,现在另一个页面要用白色了,就不需要两张图了,而是使用tint来修改为白色即可
包体积监控
对每个版本的包大小变化进行监控,设置合理流程去规划包体积增长