分析应用性能

如果应用响应速度慢、动画播放不流畅、卡顿或耗电量过高,就表示应用的性能不佳。若要解决性能问题,就需要找出应用的哪些方面导致不能高效地利用资源(例如 CPU、内存、图形、网络或设备电池)。

为了找出并解决这些问题,您可以使用本主题中介绍的性能分析和基准化分析工具与技巧。如需了解衡量性能的技巧,以及关于如何利用这些技巧解决具体问题的示例,请参阅衡量性能

Android Studio 提供了一些性能分析工具来帮助您找出并直观呈现潜在的问题:

  • CPU 性能分析器有助于查出运行时性能问题。
  • 内存分析器有助于跟踪内存分配情况。
  • 能耗性能分析器可跟踪能耗情况,这有助于分析电池电量消耗过快的问题。

这些工具与 Android 5.0(API 级别 21)及更高版本兼容。如需详细了解这些工具,请参阅用户指南这一部分中的其他页面。

借助 Jetpack 基准库,您的应用可衡量各种重要操作:

  • Macrobenchmark:测量重要的性能用例,包括应用启动以及由界面动画或滚动等操作触发的重新绘制。
  • Microbenchmark:测量特定函数的 CPU 开销。

如需详细了解这些库,请参阅对您的应用进行基准测试页面。

可分析应用

Profileable 是在 Android Q 中引入的清单配置。它可以指定设备用户能否通过 Android Studio、Simpleperf 和 Perfetto 等工具对此类应用进行性能分析。

profileable 之前,大多数开发者只能对 Android 上的可调试应用进行性能分析,这会导致性能显著下降。这些性能下降可能会导致分析结果无效,尤其是当它们与时间有关时。表 1 总结了可调试应用和可分析应用之间的区别。

表 1. 可调试应用和可分析应用之间的主要区别摘要。
功能 可调试 可分析
内存分析器 完整

是:

否:

CPU 性能分析器 完整

是:

否:

网络性能分析器
能耗性能分析器
功耗性能分析器
事件监视器

引入了 Profileable,以便开发者可以选择允许其应用向分析工具公开信息,同时导致的性能下降微乎其微。可分析 APK 实质上是在清单文件所含 <application> 部分内添加了一行 <profileable android:shell="true"/> 的发布版 APK。

自动构建和运行可分析应用

只需点击一下,即可配置、构建并运行可分析应用。此功能需要搭载 Android 29 或更高级别且具有 Google Play 的虚拟或实体测试设备。如需使用该功能,请点击 Profile app 图标 旁边的箭头,然后从两个选项中进行选择:

一键式可分析 build 菜单。
  • Profile 'app' with low overhead 会启动 CPU 性能分析器和内存分析器。在内存分析器中,只有 Record Native Allocations 为启用状态。

    以较低的开销进行性能分析。
  • Profile 'app' with complete data 会启动 CPU 性能分析器、内存分析器和能耗性能分析器。

    使用完整数据进行性能分析。

手动构建和运行可分析应用

如需手动构建可分析应用,您需要先构建发布版应用,然后更新其清单文件,将发布版应用转换为可分析应用。配置可分析应用后,启动性能分析器并选择要分析的可分析进程。

构建发布版应用

如需出于性能分析目的构建发布版应用,请执行以下操作:

  1. 使用调试密钥为应用签名,方法是将以下几行代码添加到应用的 build.gradle 文件。如果您已有有效的发布 build 变体,则可以跳到下一步。

            buildTypes {
              release {
                signingConfig signingConfigs.debug
              }
            }
          
  2. 在 Android Studio 中,依次选择 Build > Select Build Variant...,然后选择发布变体。

将发布版应用更改为可分析应用

  1. 打开 AndroidManifest.xml 文件并在 <application> 内添加以下代码,将上述发布版应用转换为可分析应用。如需了解详情,请参阅构建应用以进行发布

    <profileable android:shell="true"/>

  2. 您可能需要将以下几行代码添加到应用的 build.gradle 文件中,具体取决于 SDK 版本。

          aaptOptions {
            additionalParameters =["--warn-manifest-validation"]
          }
        

对可分析应用进行性能分析

如需对可分析应用进行性能分析,请执行以下操作:

  1. 从开发模拟器或设备启动应用。

  2. 在 Android Studio 中,依次选择 View > Tool Windows > Profiler 来启动性能分析器。

  3. 应用启动后,点击性能分析器中的 性能分析器加号按钮 按钮以查看下拉菜单。选择您的设备,然后在 Other profileable processes 下选择应用对应的条目。

    可分析菜单
  4. 性能分析器应附加到应用。只有 CPU 和内存分析器可用,而且内存分析器的功能有限。

    可分析会话视图
    可分析菜单
    可分析菜单

会话

您可以将性能分析器数据另存为会话,这些会话将一直保留,直到您退出 Android Studio。通过在多个会话中记录性能分析信息并在它们之间进行切换,您可以比较各种场景中的资源使用情况。

  • 如需启动一个新的会话,请点击 Start a new profiling session 按钮,然后从出现的下拉菜单中选择一个应用进程。
  • 在您记录轨迹捕获堆转储时,Android Studio 会将相应数据(以及您应用的网络活动)作为单独的条目添加到当前会话。
  • 如需停止向当前会话添加数据,请点击 Stop the current profiling session 图标
  • 如需导入之前运行 Android Studio 时导出的轨迹,请点击 Start new profiler session 图标 ,然后选择 Load from file

为旧款设备(API 26 以下级别)启用额外的支持

如需在运行搭载 Android 7.1 或更低版本的设备时向您显示额外的性能分析数据,Android Studio 必须将监控逻辑注入您编译的应用。这些额外的性能分析数据包括:

  • 所有性能分析器窗口中的事件时间轴
  • 内存性能分析器中已分配对象的数量
  • 内存性能分析器中的垃圾回收事件
  • 网络性能分析器中有关所有已传输文件的详细信息

如需为旧款设备启用额外的支持,请按以下步骤操作:

  1. 依次选择 Run > Edit Configurations
  2. 在左侧窗格中选择您的应用模块。
  3. 点击 Profiling 标签页,然后选中 Enable additional support for older devices (API level < 26)
  4. 再次构建并运行您的应用。

为旧款设备启用额外的支持会使构建流程变慢,所以只有在您想要开始分析应用的性能时,才应启用这种支持。

运行独立性能分析器

借助独立 Android Studio 性能分析器,您可以分析应用的性能,而无需运行完整的 Android Studio IDE。

如需运行独立性能分析器,请执行以下操作:

  1. 确保性能分析器当前未在 Android Studio 中运行。
  2. 转到安装目录,然后转到 bin 目录:

    Windows/Linuxstudio-installation-folder/bin

    macOS:macOS 不支持使用独立的性能分析器。

  3. 根据您的操作系统,运行 profiler.exeprofiler.sh。系统随即会显示 Android Studio 启动画面。启动画面消失后,系统会打开性能分析器窗口。