Monzo 是一家英国数字银行,拥有 1,500 万客户,并且还在不断增长。随着应用规模的扩大,工程团队发现应用启动时间是一个亟待改进的关键领域,但担心这需要对代码库进行重大更改。
通过全面启用 R8 优化,Monzo 将应用无响应 (ANR) 发生率大幅降低了 35%。这一简单的更改证明,富有成效的优化并不总是需要复杂的工程工作。
通过 R8 完整模式实现广泛的性能提升
Monzo 发现 R8 完整模式是一种值得尝试的简单修复方法,并且确实有效,全面提升了性能:
- 启动可靠性:冷启动性能提升了 30%,温启动性能提升了 24%,热启动性能提升了 14%。
- 启动速度:P50 启动时间缩短了 11%,P90 启动时间缩短了 12%。
- 效率:应用总体大小缩减了 9%。
- 稳定性:ANR 发生率降低了 35%。
只需一项更改即可启用优化
许多 Android 应用使用过时的默认配置文件,这会停用 R8 优化器的大部分功能。Monzo 为实现这些性能提升而做出的主要更改是将 proguard-android.txt 默认文件替换为 proguard-android-optimize.txt。此更改会移除 -dontoptimize 指令,并允许 R8 正常执行其工作。
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
)
}
}做出此更改后,您应该查看 Keep 配置文件。这些文件会告知 R8 哪些代码部分不应处理(通常是因为它们是由外部库或动态调用的)。清理不必要的 Keep 规则意味着 R8 可以执行更多操作。
使用基准配置文件提升滚动性能
为了进一步提升用户体验,Monzo 实现了基准配置文件,专门针对其主信息流的滚动和渲染性能进行了优化。这一策略确保了最常见的用户体验历程(打开应用和滚动浏览信息流)得到了充分优化。这对渲染产生了重大影响:P90 滚动性能提升了 71%,P95 滚动性能提升了 87%。现在,应用的滚动比以前更流畅。
Monzo 将此功能纳入其发布流程,以便长期保持这些改进。Neumayer 解释道:“我们会在每个工作日(在运行每夜版之前)触发基准配置文件生成,并在完成后提交最新更改。”
紧跟 Modern Android Development 的发展步伐
Monzo 的经验表明,及时了解 Android build 工具的最新建议可以带来无限可能。虽然旧版应用通常难以处理复杂的反射用法,但 Monzo 发现,只要正确记录其 Keep 规则,过渡过程就会变得简单直接。Neumayer 指出:“我们总是会添加注释来解释保留规则的原因,这样我们就能知道何时可以安全地移除这些规则。”
Neumayer 对其他团队有何建议?定期对照当前标准检查您的做法:“查看 Google 围绕应用性能提供的最新建议,并检查您是否遵循了所有最新建议。”
如需开始使用并详细了解 R8,请访问 https://d.android.com/r8
-
案例研究Grab 是东南亚领先的超级应用,通过单一应用为八个国家/地区的数百万用户提供配送、出行和金融服务。
Ajesh Pai, Nguyen Van Minh, Tracy Agyemang • 阅读用时:5 分钟 -
案例研究WhatsApp 是全球最大的即时通讯平台,为全球数十亿用户提供服务。它是不同地区用户的默认通讯工具,通过私密、可靠且安全的即时通讯服务连接用户。
Niharika Arora, Tracy Agyemang, Mayank Jain • 阅读用时:8 分钟 -
案例研究Tinder 的使命是让每一代单身人士都能轻松有趣地结识新朋友,从而促进和激发真实的联系。
Ajesh Pai, Ulises Uriel Verduzco Díaz , Tracy Agyemang • 阅读用时:4 分钟
每周通过电子邮件接收最新的 Android 开发洞见。