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

  • 测试
  • 开发
  • 分析

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

这样做的好处

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

关键指标

  • 稳定性 | ANR 发生率:在活跃日遇到至少 1 次应用无响应 (ANR) 事件的用户所占的百分比。ANR 通常是由于界面线程和后台进程(广播接收器)出现死锁情况或速度缓慢所导致。
  • 稳定性 | 崩溃率:在活跃日遇到至少 1 次崩溃问题的用户所占的百分比。崩溃问题通常是由于未处理的异常情况、资源耗尽、失败的断言或其他非预期的状态所导致。
  • 呈现时间 | 16ms (60fps):存在以下情况的活跃日所占的百分比 - 超过 50% 的帧呈现时间大于 16 毫秒。用户与应用的互动速度应该保持在 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,更高效地开发和发布应用,无需重构代码即可缩减应用的大小。

示例