在设备上捕获系统跟踪

运行 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 开源项目下载它。