去除&减少无用资源,文件,库
- buildTypes中开启
minifyEnabled = true
和shrinkResources = true
去除无用资源和代码 - 去除没有用到的库和相应的so文件
- 在满足需求的情况下,将大型,重量级的库替换为小型轻量级的库,并且可以根据自己的需求进行源码局部化定制
defaultConfig{resConfigs "zh"}
删除没有用到的语言资源
引用的图片资源优化
- 在差不多的展现质量上,耗费空间大小由小到大为:webp < jpg < png,所以可以利用webp进行图片层级上的优化
引用的音频资源优化
- 可以使用opus代替一般的音频资源
Provided关键字
- 不要重复利用compile关键字,使用Provided
Proguard深度混淆代码
- 优点:
- 防止被反编译
- 缩短变量名和函数名,jar体积减少25%左右
- 缺点
- 混淆时使用反射会造成麻烦
微信资源打包
- 混淆资源ID的长度,利用7z进行深度压缩
如res/drawable/icon.png -> r/d/i
全版本兼容的瘦身方案
- 对白色和透明图片有效
- 需要支持多个主题时,不需要为同一个图标准备多个drawable,减少了apk空间
插件化技术
- 大大减少APK的大小,可以做到按需加载,动态配置,非常灵活,插件化技术较为复杂,之后有时间会开专题详细讲解这个技术