
Google 宣布,在最新版本的 Android Gradle Plugin(AGP)中引入了一种全新的资源压缩优化方案,将代码优化与资源压缩合并处理。在同时支持多种设备形态、并大量共享代码和资源的应用上,这一方案能让体积缩减幅度最高达到 50%。
在这一新方法中,Android 长期使用的优化器 R8 可以同时处理代码和资源引用,从而识别出那些只被无用代码引用的资源,并将它们连同对应的冗余代码一起移除。
这意味着,AAPT2 不必再生成那些一刀切的保留规则;取而代之,开发者能获得更精准的分析信息,从而更有针对性地移除无用代码和资源。
在旧版本中,AAPT2 会在 R8 优化代码之前生成无条件保留规则,这些规则经常会误保留一些无用代码,进而阻止 R8 清理掉相关的冗余资源。
Google 表示:“在新的 R8 优化流程下,对于跨多种设备形态共享大量代码和资源的应用,体积缩减效果可超过 50%,对于中小型应用也有显著提升。”
随着新优化机制的引入,开发者目前可选择四种不同的应用优化方式:
1. 不进行优化
2. 仅使用 R8
3. 使用 R8 并启用资源压缩
4. 启用优化版资源压缩
这几种方式效果依次递进。启用 R8 可以减小 DEX 文件体积;在此基础上,启用资源压缩会移除 res 文件夹和资源表中未使用的资源,但不会进一步减少 DEX 大小;而优化版资源压缩还能同时追踪代码和资源的引用,把冗余的资源和 DEX 代码一起清理掉,从而让应用体积进一步缩小。
AGP 8.12.0 已提供这一全新的资源压缩流程,开发者可自行选择启用。要启用它,开发者需在 AGP 配置中写入:
在即将发布的 AGP 9 中,这一优化行为将成为默认设置。
应用体积缩减的好处不仅体现在更快的下载速度、更快的安装过程和更低的内存占用,还能带来更快的启动时间、更流畅的渲染表现,并减少 ANR(应用无响应)的发生——这种问题通常是由于应用的 UI 线程长时间被阻塞导致的。
原文链接:
评论