包体积优化
包体积优化
一、APK结构分析工具
- Android Studio内置工具
- 使用 Build > Analyze APK
- 查看各模块占比(代码/资源/原生库/Assets)
- 命令行工具
./gradlew :app:assembleRelease --scan
二、代码优化
- 启用代码混淆与优化
- 移除未使用代码
- 使用android studio的lint分析未使用代码
- 添加R8配置文件删除无引用代码
- 方法数优化
- 启用Multidex前优化
- 使用D8编译器的dex优化
三、资源优化
- 资源压缩与清理
- 移除未使用资源
# 检测未使用资源
./gradlew lintRelease
# 自动移除
./gradlew removeUnusedResources
- 矢量图代替位图
- Webp格式转换
四、库优化
- 仅保留必要ABI
- 轻量库代替
五、高级优化技术
- 资源混淆
- 资源分包加载
- 按需加载功能模块
六 、 Assets优化
- 压缩assets资源:存储时压缩,使用时解压
七、知识补充
- D8、R8和代码混淆的关系
- D8负责字节码到Dex的精确转换
- R8 = D8 + 裁剪 + 优化 + 混淆
- 混淆是R8的战术武器:仅负责名称混淆(对体积影响小,对安全性关键)
- 开启R8 ≈ D8编译 + 三重优化(裁剪/优化/混淆)