10、包体积优化:资源压缩、冗余代码清理、分包、7z 压缩、无用资源剔除

14 阅读3分钟

包体积优化:资源压缩、冗余代码清理、分包、7z 压缩、无用资源剔除

1、App 包体积过大有什么影响?

答案

下载耗时、流量消耗大、应用商店转化率低、安装占用空间大、安装慢、低配机容易安装失败。

2、包体积优化整体分为哪几类?

答案

  • 代码优化
  • 资源优化
  • 图片及音视频优化
  • 分包策略
  • 编译打包压缩优化

3、无用资源剔除怎么做?

答案

  1. 开启 Android Studio 自带 无用资源检测,删除未引用图片、布局、字符串;
  2. 开启 Lint 静态检查 扫描冗余资源;
  3. 使用 Resource Shrinking 资源缩减,打包自动剔除未引用资源;
  4. 禁用无用语言适配、禁用多分辨率无用 dpi 资源。

4、冗余代码清理有哪些方式?

答案

  1. 删除业务废弃类、废弃方法、无用常量;
  2. 开启 R8/Proguard 混淆压缩,移除无效代码、精简类和方法;
  3. 移除项目中未使用的第三方依赖库
  4. 模块化按需依赖,避免全量引入大而全 SDK。

5、资源压缩怎么做?

答案

  1. 图片压缩:无损压缩、转 WebP 格式,体积更小质量无损;
  2. 矢量图替代大图,用 svg 代替 png;
  3. 布局、xml、json 文件精简压缩;
  4. 音视频码率压缩、降低分辨率。

6、开启 R8 / 混淆的作用

答案

代码混淆、精简、瘦身

删除无效代码、压缩类名方法名、移除冗余常量,显著减小包体积,同时提高反编译难度。

7、什么是分包?原理和好处

答案

把 APK 拆分成 基础包 + 资源分包 / 功能分包

原理:将不常用功能、大资源、冷门业务拆到分包,主包只保留核心必要代码和资源;

好处:减小主包体积,用户先下载小体积主包,进入 App 后再按需下载分包。

8、7z 压缩优化是什么原理?

答案

7z 比普通 zip 压缩率更高;

打包时用 7z 算法对资源、静态文件高强度压缩,减少冗余字节,进一步压缩包体积;不影响运行,只提升压缩率瘦身。

9、如何避免引入大体积第三方库?

答案

  1. 替换重型 SDK 为轻量替代库;
  2. 只引入 SDK所需模块,不要全量依赖;
  3. 自行实现简单功能,替代臃肿第三方库。

10、实际项目中全套包体积优化手段总结

答案

  1. 剔除无用资源、删冗余布局图片、关闭多余 dpi 和语言资源;
  2. 图片转 WebP、矢量图替代大图、资源无损压缩;
  3. 开启 R8 混淆代码压缩、清理无用依赖和废弃代码;
  4. 功能拆分分包,主包瘦身、按需加载分包;
  5. 采用 7z 高压缩率打包,进一步压缩静态资源体积。