欢迎参加我们将于 6 月 3 日举行的 #Android11:Beta 版发布会

使用 Android Vitals 改进您的应用的性能、稳定性和大小

  • 测试
  • 开发
  • 分析

性能和稳定性与 Google Play 上的积极评分有直接关系。通过修正应用中存在的问题和防止应用出现不良行为,您可以提升用户体验、提高评分并增加保留应用的安装人数。此外,缩减应用的大小可以提高安装率并减少卸载次数。

这样做的好处

Android Vitals 可显示有关稳定性、耗电量、卡顿、启动时间和权限遭拒情况的应用性能指标。通过跟踪这些指标,您可以找出并修正会直接影响用户体验的不良应用行为。您可以根据 Android Vitals 核心指标的突然变化来了解有哪些需要加以调查的异常情况,并借助各种基准数据来比较同类应用的性能。指标值较高的应用能够更有效地推广,进而可在 Google Play 商店搜索结果中获得更高的排名。此类应用也更可能列入 Google Play 上的“新上线 + 最近更新”和“编辑精选”合集,获得 Google Play 年度奖提名的可能性也更大。

关键指标

  • 稳定性 | ANR 发生率:在每日工作时段中遇到至少 1 次应用无响应 (ANR) 事件的用户所占的百分比。ANR 通常是由于界面线程和后台进程(广播接收器)出现死锁情况或速度缓慢所导致。
  • 稳定性 | 崩溃率:在每日工作时段中遇到至少 1 次崩溃事件的用户所占的百分比。崩溃通常是由于未处理的异常情况、资源耗尽、失败的断言或其他非预期的状态所导致。
  • 呈现时间 | 16ms (60fps):存在以下情况的每日工作时段所占的百分比:用户遇到呈现时间长于 16 毫秒的帧超过 50%。用户与应用的互动速度应该保持在 60 帧/秒,并且不会出现帧丢失或帧延迟的情况。
  • 呈现时间 | 700ms:一天内遇到 1000 帧中有 1 个以上帧的呈现时间超过 700 毫秒的用户所占的百分比。如上所述,呈现时间较长会使应用运行不够顺畅,导致用户体验变差。如果帧需要 700 毫秒或更长时间才能呈现,则对于用户来说,您的应用很有可能看起来像处于冻结状态。
  • 电池 | 部分唤醒锁定:在特定日期遇到至少 1 次长达 1 小时以上的唤醒锁定的用户所占的百分比。部分唤醒锁定卡住会阻止空闲设备进入休眠状态,并使其无法节省电量。
  • 电池 | 唤醒次数:自设备充满电后,每小时遇到 60 次以上唤醒情况的用户所占的百分比。如果因闹钟在应用生命周期之外按时执行的操作而频繁发生唤醒情况,这会阻止空闲设备进入休眠状态。
  • 启动时间:用户遇到冷启动或热启动时间过长情况的工作时段所占的百分比。启动缓慢可能是由一系列问题导致的,但通常表明在初始化应用时执行了繁重的工作负载或复杂的逻辑。
  • 权限遭拒:用户拒绝了权限请求或选择不再询问的每日权限请求工作时段所占的百分比。权限遭拒可能表明用户不清楚请求权限的原因或认为该请求不必要或不合理。
  • 应用大小:跟踪应用的下载大小和安装到设备上的大小,然后将这些指标与类似应用进行比较。另外,请参阅存储空间小的设备的活跃用户和卸载量指标。我们会分析您的应用版本,从而给出有关如何缩减应用大小的优化建议,敬请了解。

最佳做法

  • 考量不良行为并予以根除:在开发应用的过程中,考量应用在不同环境中的行为方式。例如,如果您在功能完善的高端设备上测试应用,则应考量应用在电源、内存、带宽以及 CPU/GPU 性能方面都很有限的低端设备上的性能如何。在发布每个版本之前,请使用发布前测试报告在多种设备上测试您的应用。
  • 在发布新的应用版本后查看 Android Vitals:在您发布应用后,Android Vitals 会针对应用在真实的正式版设备上的运行状况提供性能指标,以助您找出在特定设备和 Android 版本中出现的会影响用户体验的问题和不良行为。
  • 找出存在问题的设备:应用可能只在某个设备或某些设备上出现不良行为。根据对用户体验造成影响的严重程度以及受影响的设备和用户数量,您可以在问题得到修正之前,先选择更新应用的设备定位以将这些设备排除在外。
  • 找出存在问题的 Android 版本:应用可能只在特定的 Android 版本上出现不良行为。对于用户数量较少的较低 Android 版本,请更新您的应用以消除不良行为,或者在应用的清单中将 <uses-sdk> 元素的 android:minSdkVersion 属性更新至应用不会出现任何不良行为的 API 级别。对于较新的 Android 版本,请一律通过更新应用来修正不良行为,而不是通过设置 <uses-sdk> 元素的 android:maxSdkVersion 属性来排除较新的 Android 版本。
  • 使用崩溃报告工具找出并跟踪崩溃和 ANR 情况:使用崩溃报告工具(如 Firebase 崩溃报告Crashlytics)以及 Android Studio 调试程序,尽可能找出并跟踪导致崩溃和 ANR 的各种情况。
  • 使用 JobScheduling API 避免唤醒锁定和唤醒:使用 JobScheduling API(如 JobScheduler)智能地安排后台进程和任务。这样一来,平台能更好地管理空闲状态,从而延长电池续航时间。
  • 使用 FrameMetrics API 找出呈现速度缓慢的帧:使用 FrameMetrics 以很高的精细度衡量应用在正式版设备中每次互动的帧呈现时间。这样您无需依赖通过 USB 连接的测试设备,即可找出在正式版设备上导致卡顿的特定互动或事件。
  • 遵循权限请求的最佳做法:在请求权限之前向用户提供说明,并确保用户可在授予权限后立即获得好处。帮助用户撤消拒绝权限的操作,并确保用户启用正确设置以便您的应用得以运行。
  • 使用发布前测试报告在真实设备上测试您的应用,从而在发布更新之前找出并解决问题。
  • 改用 Android App Bundle,更高效地开发和发布应用,无需重构代码即可缩减应用的大小。

示例