承接上一篇《包体积优化总览:资源、代码与 so 三条线》给出的三条主线,这一篇深入占比最高的那条:资源。资源瘦身的收益在多数项目里是最直接的一块——一个中等规模 App 的 res/ 常常占到安装包的四成上下,而其中的九成以上是图片。但资源瘦身也是最容易\”优化出 bug\”的一条线,因为 shrinkResources 的判断依赖静态分析,而真实工程里总有一批资源是通过反射、动态拼名、下发配置引用的。
结论先行:资源瘦身要分成\”确定安全的\”和\”需要灰度的\”两批做,前者立刻见效,后者先留观测。
图片为什么是资源里的大头
先说清成本结构。同一张界面图,在不同格式下的体积差异往往比想象中大:
| 照片/渐变 | PNG(无损) | 800 KB~2 MB | 无损压缩对真实照片几乎不起作用 |
| 照片/渐变 | WebP q80 | 120 KB~300 KB | 视觉接近无损,体积约为 PNG 的 1/4~1/5 |
| 照片/渐变 |



