活动和计划

全面优化:性能聚焦周总结

阅读用时:3 分钟

过去一周,我们深入探讨了各种最佳实践和指南,旨在帮助您让 Android 应用运行得更快、更小巧、更稳定。从 R8 优化器配置文件引导的优化的基础功能,到 Jetpack Compose 带来的性能改进,再到有关提升应用性能的新指南,我们介绍了构建高性能应用所需的低投入、高回报工具。

本文将作为索引和路线图,以便您在需要优化时随时重新访问这些资源。以下是我们共同学习历程中的 5 个要点。

使用 R8 优化器加快应用运行速度

您可以做出的最有效且最省力的更改是完全启用 R8 优化器。它不仅可以减小应用大小,还可以执行深度全程序优化,从根本上重写代码以提高效率。重新检查您的保留规则,让 R8 重新参与到您的工程任务中。

我们新更新并扩充了有关 R8 优化器的文档,可为您提供帮助。

Reddit 在启用 R8 完全模式后,发现冷启动速度提升了 40% ANR 错误减少了 30%

您可以在我们的博客上阅读完整的案例研究

image.png

Disney+ 的工程师致力于提升应用性能,并不断优化应用的用户体验。有时,即使是看似微小的变化,也能带来巨大的影响。在检查其 R8 配置时,该团队发现使用了 -dontoptimize 标志。通过移除此标志来启用优化后,Disney+ 团队发现其应用的性能显著提升。

image.png

因此,下次有人问您如何才能提升应用性能时,只需将他们引导到这篇博文即可。

如需了解详情,请参阅我们的第 1 天博客使用 R8 缩减、优化应用并加快应用开发速度

引导您提升效果

基准配置文件可有效消除对即时编译的需求,从而提高启动速度、滚动速度、动画效果和整体渲染性能。启动配置文件通过为应用的 classes.dex 文件提供智能排序,使应用启动更加轻量化。

如需详细了解基准配置文件对应用性能的重要性,请阅读 Meta 的工程博客,其中分享了基准配置文件如何将 Meta 应用的各种关键效果指标提升高达 40%

Jetpack Compose 1.10 中,我们继续提升 Jetpack Compose 的性能。 在处理复杂的列表项时,可暂停的 Compose和可自定义的缓存窗口等功能对于保持零滚动卡顿至关重要。请观看最新一期 #TheAndroidShow,其中详细介绍了这一点。

如需了解详情,请参阅我们周三发布的博文更深入的性能考虑因素

衡量效果非常简单,只需三步

无法衡量,便无法管理。我们的效果分级指南将效果衡量之旅分为五个步骤,从易于获取的数据开始,逐步过渡到高级本地工具。

第 1 级开始,我们将教您如何使用 Android Vitals 中现成的数据,该工具可为您提供有关 ANR、崩溃和过度电池用量的实地数据。

我们还将教您如何升级。例如,我们将演示如何使用 Jetpack Macrobenchmark 和新的 UiAutomator 2.4 API 通过本地性能测试达到第 3 级,从而准确衡量和验证应用性能的任何变化。 

如需了解详情,请参阅我们周四发布的博文: [链接到周四的博文:提升效果的升级指南]

调试性能刚刚升级

高级优化不应导致崩溃报告无法解读。新功能旨在帮助您放心地调试 R8 和后台工作:

自动 Logcat 回溯

从 Android Studio Narwhal 开始,可以在 Logcat 窗口中自动对堆栈轨迹进行反混淆处理。这样,您就可以立即查看并调试可用于生产用途 build 中的任何崩溃问题。

窄幅保持规则

周二,我们揭秘了修复运行时崩溃所需的 Keep 规则,强调编写具体的成员级规则,而不是过于宽泛的通配符。由于这是一个重要主题,我们还为您制作了一段视频。

借助针对宽 Keep 规则的新 lint 检查,Android Studio Otter 3 Feature Drop 也可为您提供这方面的帮助。

image.png

我们还发布了有关 测试和 问题排查 R8 配置的新指南,帮助您自信地完成正确配置。

如需了解详情,请参阅我们周二的博客: 配置和排查 R8 Keep 规则方面的问题

后台工作

我们分享了有关调试使用 WorkManager 调度任务时可能遇到的常见场景的指南。

后台任务检查器可直观呈现 WorkManager 任务并以图表视图显示,有助于调试预定工作延迟或失败的原因。我们更新了后台工作文档的着陆页,其中重点介绍了针对特定使用情形进行了优化的任务特定 API,可帮助您实现更可靠的执行。

如需了解详情,请参阅我们周三发布的博文: 后台工作性能注意事项

性能优化是一项持续进行的工作

如果您本周成功完成了启用 R8 完整模式的挑战,那么下一步就是使用应用性能得分将性能纳入产品路线图。这一标准化框架可帮助您找到可带来最大杠杆效应的行动项,从而实现持续改进。

我们以 #AskAndroid Live 问答环节为本周画上圆满句号,工程师们在其中解答了您关于 R8、Profile Guided Optimizations 等方面的难题。如果您错过了,请观看重播!

感谢您的参与!现在,开始构建并保持这股势头。

继续阅读