包体积优化:资源压缩、冗余代码清理、分包、7z 压缩、无用资源剔除
1、App 包体积过大有什么影响?
答案
下载耗时、流量消耗大、应用商店转化率低、安装占用空间大、安装慢、低配机容易安装失败。
2、包体积优化整体分为哪几类?
答案
- 代码优化
- 资源优化
- 图片及音视频优化
- 分包策略
- 编译打包压缩优化
3、无用资源剔除怎么做?
答案
- 开启 Android Studio 自带 无用资源检测,删除未引用图片、布局、字符串;
- 开启 Lint 静态检查 扫描冗余资源;
- 使用 Resource Shrinking 资源缩减,打包自动剔除未引用资源;
- 禁用无用语言适配、禁用多分辨率无用 dpi 资源。
4、冗余代码清理有哪些方式?
答案
- 删除业务废弃类、废弃方法、无用常量;
- 开启 R8/Proguard 混淆压缩,移除无效代码、精简类和方法;
- 移除项目中未使用的第三方依赖库;
- 模块化按需依赖,避免全量引入大而全 SDK。
5、资源压缩怎么做?
答案
- 图片压缩:无损压缩、转 WebP 格式,体积更小质量无损;
- 矢量图替代大图,用 svg 代替 png;
- 布局、xml、json 文件精简压缩;
- 音视频码率压缩、降低分辨率。
6、开启 R8 / 混淆的作用
答案
代码混淆、精简、瘦身;
删除无效代码、压缩类名方法名、移除冗余常量,显著减小包体积,同时提高反编译难度。
7、什么是分包?原理和好处
答案
把 APK 拆分成 基础包 + 资源分包 / 功能分包;
原理:将不常用功能、大资源、冷门业务拆到分包,主包只保留核心必要代码和资源;
好处:减小主包体积,用户先下载小体积主包,进入 App 后再按需下载分包。
8、7z 压缩优化是什么原理?
答案
7z 比普通 zip 压缩率更高;
打包时用 7z 算法对资源、静态文件高强度压缩,减少冗余字节,进一步压缩包体积;不影响运行,只提升压缩率瘦身。
9、如何避免引入大体积第三方库?
答案
- 替换重型 SDK 为轻量替代库;
- 只引入 SDK所需模块,不要全量依赖;
- 自行实现简单功能,替代臃肿第三方库。
10、实际项目中全套包体积优化手段总结
答案
- 剔除无用资源、删冗余布局图片、关闭多余 dpi 和语言资源;
- 图片转 WebP、矢量图替代大图、资源无损压缩;
- 开启 R8 混淆代码压缩、清理无用依赖和废弃代码;
- 功能拆分分包,主包瘦身、按需加载分包;
- 采用 7z 高压缩率打包,进一步压缩静态资源体积。