
Google在Android Gradle Plugin(AGP)8.12中新增优化资源缩减(Optimized Resource Shrinking)工作流程,让资源缩减能与R8代码优化同时进行。对于已在项目中启用R8工具与资源缩减的开发者,只要在gradle.properties中开启相关标志,即可利用这项功能,进一步降低安装包大小,并改善启动速度、渲染表现与应用无响应(Application Not Responding,ANR)的情况。
R8是Android构建过程中,用于代码缩减、优化和混淆的工具,能移除未使用的代码、缩小应用体积,并提升运行性能。
传统流程的问题
传统流程中,AAPT2(Android资源打包工具2)会为资源引用生成无条件保留规则(Unconditional Keep Rules),使得被资源引用的类在后续R8缩减时一律保留,而R8完成代码缩减后,再扫描剩余代码构建资源引用图。由于这些规则偏保守,常连带保留本可移除的代码与其引用的资源,降低缩减效果。
新整合流程的优势
新的整合流程由R8同步优化代码格式与资源引用,能精确找出仅由未使用代码引用的资源,并加以移除,不再依赖AAPT2生成的无条件保留规则。此做法同时为代码与资源提供更细致的可删除性信息,提升删除效率并减少错误保留的情况。Google建议在正式版(Release)构建中使用,以避免影响调试与测试。
实际优化效果
优化的实际效果会因项目规模与结构而不同。对于跨设备共用大量资源的应用,新的整合流程可能带来明显的体积缩减;小型应用虽然空间节省有限,但仍能受益于更一致的缩减结果。Google提供的数据显示,部分项目的安装包大小甚至可降低超过50%。
启用方式与未来规划
AGP 8.12仅提供此功能作为选项,开发者需手动开启。不过,从AGP 9.0开始,优化资源缩减将成为默认行为,只要项目启用了资源缩减,便会自动使用新的整合流程。