在设备上捕获系统跟踪记录

运行 Android 9(API 级别 28)或更高版本的设备包含一个名为“系统跟踪”的系统级应用。此应用类似于 systrace 命令行实用工具,但该应用可让您直接从测试设备本身记录跟踪记录,而无需插入设备并通过 adb 连接到设备。然后,您可以使用该应用与开发团队共享这些跟踪记录的结果。

运行 Android 10 及更高版本的设备以 Perfetto 格式记录跟踪记录,而早期设备则以 Systrace 格式记录。我们建议使用 Perfetto 跟踪记录查看器打开这两种格式,然后分析跟踪记录。

在解决应用中与性能相关的 bug(例如启动缓慢、过渡缓慢或界面卡顿)时,记录跟踪记录会很有帮助。

记录系统跟踪记录

“系统跟踪”应用可让您使用 快速设置图块或应用本身的菜单来记录系统跟踪记录。以下部分介绍了如何使用这些界面完成记录过程。

使用快速设置图块记录

快速设置图块通常是在设备上完成系统跟踪过程的更便捷方式。

设置图块

如果您是首次在测试设备上使用“系统跟踪”,或者您未在设备的快速设置面板中看到系统跟踪图块(如图 2 所示),请完成以下设置步骤

  1. 启用开发者选项.
  2. 打开开发者选项设置屏幕。
  3. 调试部分,选择系统跟踪。“系统跟踪”应用将打开,显示应用菜单。
  4. 在应用菜单中,启用显示快速设置图块(如图 1 所示)。系统会将系统跟踪图块添加到快速设置面板中(如图 2 所示)

    图 1. “系统跟踪”应用中的显示快速设置图块开关。
    图 2. 快速设置面板中的系统跟踪图块。

    注意: 默认情况下,系统会将系统跟踪图块添加为快速设置面板中的第一个图块。如果您希望图块显示在其他位置,请使用面板的修改模式移动图块。

完成系统跟踪记录

要使用快速设置面板记录系统跟踪记录,请完成以下步骤

  1. 点按系统跟踪图块,其标签为记录跟踪记录。该图块将启用,并显示一个持久性通知,告知您系统正在记录跟踪记录,如图 3 所示

    Notification with the message 'Trace is being recorded. Tap to stop
  tracing.'
    图 3. 在启动设备上的系统跟踪记录后显示的持久性通知。
  2. 执行您希望系统检查的应用中的操作。

  3. 通过点按快速设置面板中的系统跟踪图块或点按“系统跟踪”通知来停止跟踪。

    系统会显示一条新通知,其中包含“正在保存跟踪记录”的消息。保存完成后,系统会关闭该通知,并显示第三个通知,确认您的跟踪记录已保存,并且您已准备好共享系统跟踪记录,如图 4 所示

    Notification with the message 'Trace saved. Tap to share your
  trace.'
    图 4. 系统完成保存记录的跟踪记录后显示的持久性通知。

使用应用菜单记录

应用菜单可让您配置与系统跟踪相关的多个高级设置,并提供用于启动和停止系统跟踪的开关。

要使用“系统跟踪”应用菜单记录系统跟踪记录,请完成以下步骤

  1. 启用开发者选项.
  2. 打开开发者选项设置屏幕。在调试部分,选择系统跟踪。“系统跟踪”应用将打开。

    或者,如果您设置了系统跟踪图块,则可以点按并按住该图块以进入“系统跟踪”应用。

  3. 确保选中跟踪可调试应用,以便在系统跟踪中包含已启用调试的应用。

  4. (可选)选择要跟踪的系统和传感器调用的类别,并选择每个 CPU 的缓冲区大小(以 KB 为单位)。选择与您正在测试的用例对应的类别,例如用于测试蓝牙操作的音频类别,或用于堆分配的内存类别。

  5. (可选)选择长时间跟踪以启用持续保存到设备存储空间的跟踪记录。对于此选项,请设置最长跟踪大小最长跟踪时长的限制。

  6. 启用记录跟踪记录开关(如图 5 所示)。该图块将启用,并显示一个持久性通知,告知您系统正在记录跟踪记录,如图 3 所示。

    图 5. “系统跟踪”设置中的记录跟踪记录开关。
  7. 执行您希望系统检查的应用中的操作。

  8. 通过停用记录跟踪记录开关来停止跟踪。

    系统会显示一条新通知,其中包含“正在保存跟踪记录”的消息。保存完成后,系统会关闭该通知,并显示第三个通知,确认您的跟踪记录已保存,并且您已准备好共享系统跟踪记录,如图 4 所示。

共享系统跟踪记录

“系统跟踪”应用可帮助您在多个不同的工作流程中共享系统跟踪记录结果。在运行 Android 10(API 级别 29)或更高版本的设备上,跟踪记录文件会保存为 .perfetto-trace 文件扩展名,并可在 Perfetto UI 中打开。在运行早期 Android 版本的设备上,跟踪记录文件会保存为 .ctrace 文件扩展名,表示 Systrace 格式。

以消息形式共享

“系统跟踪”可让您与设备上的其他应用共享您收集的跟踪记录。您可以通过电子邮件或错误跟踪应用将跟踪记录发送给您的开发团队,而无需将设备连接到您的开发机器。

记录系统跟踪记录后,点按设备上显示的通知(例如图 4 中所示的通知)。平台的目的选择器会显示,让您可以使用所选的消息应用共享跟踪记录。

从“文件”应用共享

在运行 Android 10(API 级别 29)或更高版本的设备上,跟踪记录会显示在“文件”应用中。您可以从该应用共享跟踪记录。

使用 ADB 下载报告

您也可以使用 adb 从设备中提取系统跟踪记录。将用于记录跟踪记录的设备连接到您的开发机器,然后在终端窗口中运行以下命令

cd /path-to-traces-on-my-dev-machine && \
  adb pull /data/local/traces/ .

转换跟踪记录格式

您可以将 Perfetto 跟踪记录文件转换为 Systrace 格式。如需了解更多信息,请参阅转换跟踪记录格式

创建 HTML 报告

共享跟踪记录时,报告本身对于运行 Android 10 或更高版本的设备是 .perfetto-trace 文件,对于所有其他版本则是 .ctrace 文件。

使用基于网页的界面或从命令行从跟踪记录文件创建 HTML 报告。

基于网页的界面

使用 Perfetto UI 打开跟踪记录文件并生成报告。

对于 Perfetto 文件,点击打开跟踪记录文件。对于 Systrace 文件,点击使用旧版界面打开。旧版界面与Systrace 报告具有相同的外观和使用体验。

命令行

在终端窗口中运行以下命令,从跟踪记录文件生成 HTML 报告

cd /path-to-traces-on-my-dev-machine && \
  systrace --from-file trace-file-name{.ctrace | .perfetto-trace}

如果您还没有 systrace 命令行程序,可以从 GitHub 上的 Catapult 项目下载,或者直接从 Android 开源项目下载。