在设备上捕获系统跟踪

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

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

在解决应用程序中的性能相关错误(例如启动缓慢、过渡缓慢或 UI 卡顿)时,记录跟踪非常有用。

记录系统跟踪

“系统跟踪”应用程序允许您使用 **快速设置磁贴** 或应用程序本身内的菜单记录系统跟踪。以下部分介绍如何使用这些界面完成记录过程。

使用快速设置磁贴进行记录

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

设置磁贴

如果您是第一次在测试设备上使用“系统跟踪”,或者如果您在设备的 **快速设置** 面板中没有看到 **系统跟踪** 磁贴(如图 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. 可选地,选择要跟踪的系统和传感器调用的类别,并选择以 KB 为单位的每个 CPU 缓冲区大小。选择与您正在测试的用例相对应的类别,例如,对于测试蓝牙操作,选择音频类别;对于堆分配,选择内存类别。

  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 文件中。

使用基于 Web 的 UI或从命令行从跟踪文件创建 HTML 报告。

基于 Web 的 UI

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

对于 Perfetto 文件,点击打开跟踪文件。对于 Systrace 文件,点击使用旧版 UI 打开。旧版 UI 的外观和感觉与Systrace 报告相同。

命令行

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

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

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