Monzo 是一家英国数字银行,拥有 1500 万客户,并且客户数量还在不断增长。随着应用的规模扩大,工程团队发现应用启动时间是一个需要改进的关键领域,但担心这需要对代码库进行重大更改。
通过完全启用 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 实施了 基准配置文件,专门针对其主 Feed 中的滚动和渲染性能。此策略确保了最常见的用户体验历程(打开应用和滚动 Feed)得到全面优化。对渲染的影响非常显著:P90 滚动性能提升了 71%,P95 滚动性能提升了 87%。现在,滚动应用比以前更加流畅。
Monzo 将此功能内置到其发布流程中,以便长期保持这些改进。“我们会在每个工作日(在运行夜间 build 之前)触发基准配置文件生成,并在完成后提交最新更改。”Neumayer 解释道。
紧跟 Modern Android Development 的步伐
Monzo 的经验表明,及时了解 Android build 工具建议可以实现哪些目标。虽然旧版应用通常难以处理复杂的反射用法,但 Monzo 通过正确记录其 Keep 规则,发现过渡过程非常简单。“我们始终会添加注释来解释 Keep 规则的用途,以便了解何时可以安全地移除这些规则。”Neumayer 指出。
Neumayer 对其他团队的建议是什么?定期根据当前标准检查您的实践:“查看 Google 针对应用性能的最新建议,并检查您是否遵循了所有最新建议。”
如需开始使用并详细了解 R8,请访问 https://d.android.com/r8
继续阅读
-
案例研究
Karrot 是一款超本地化、社区驱动的 P2P 市场应用,用户可以通过该应用与其他经过验证的用户买卖和交易商品。自 2015 年在韩国推出以来,该平台已扩展到全球市场,注册用户超过 4300 万。
Thomas Ezan, Tracy Agyemang • 2 分钟阅读时间
-
案例研究
在瞬息万变的社交媒体世界中,用户注意力很快就会被吸引或丢失。Meta 应用(Facebook 和 Instagram)是全球最大的社交平台之一,为全球数十亿用户提供服务。
Mayuri Khinvasara Khabya, Tracy Agyemang • 4 分钟阅读时间
-
案例研究
为可穿戴设备构建 Android 应用意味着,当屏幕关闭时,真正的工作才刚刚开始。
Breana Tate, Tracy Agyemang • 4 分钟阅读时间
随时了解最新动态
每周通过电子邮件接收最新的 Android 开发洞见 每周。