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

搭载 Android 9(API 级别 28)或更高版本的设备包含一个名为 System Tracing 的系统级应用。此应用类似于 systrace 命令行实用程序,但能让您直接从测试设备本身录制轨迹,而不必插入设备并通过 adb 连接到该设备。然后,您可以使用此应用与开发团队共享根据这些轨迹得出的结果。

搭载 Android 10 及更高版本的设备是以 Perfetto 格式录制轨迹,而早期设备是以 Systrace 格式进行录制。因此,我们建议使用 Perfetto 轨迹查看器打开这两种格式,然后分析轨迹。

这有助于在解决应用中与性能相关的 bug(例如启动速度缓慢、转换速度缓慢或界面卡顿)时录制轨迹。

录制系统轨迹

借助 System Tracing 应用,您可以使用“快捷设置”功能块或应用自身提供的菜单来录制系统轨迹。以下各部分介绍如何使用这些界面完成录制过程。

使用“快捷设置”功能块录制

使用“快捷设置”功能块来完成设备上系统跟踪进程通常更便捷。

设置功能块

如果您是首次在测试设备上使用 System Tracing,或在设备的快捷设置面板中看不到 System Tracing 功能块(如图 2 所示),请完成以下设置步骤:

  1. 启用开发者选项
  2. 打开开发者选项设置屏幕。
  3. 调试部分中,选择 System Tracing。此时会打开 System Tracing 应用,其中显示了应用菜单。
  4. 在应用菜单中,启用显示“快捷设置”功能块,如图 1 所示。系统会将 System Tracing 功能块添加到快捷设置面板中,如图 2 所示:

    图 1. System Tracing 应用中的显示“快捷设置”功能块开关。
    图 2. 快捷设置面板中的 System Tracing 功能块。

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

完成系统轨迹的录制

若要使用快捷设置面板录制系统轨迹,请完成以下步骤:

  1. 点按 System Tracing 功能块,该功能块带有录制轨迹标签。该功能块会变为启用状态,并且系统会显示常驻通知,通知您系统正在录制轨迹,如图 3 所示:

    显示“正在录制轨迹。点按即可停止跟踪。”消息的通知。
    图 3. 启动设备上系统轨迹后出现的常驻通知。
  2. 在您的应用中执行您希望系统检查的操作。

  3. 通过点按快捷设置面板中的 System Tracing 功能块或点按 System Tracing 通知来停止跟踪。

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

    显示“已保存轨迹。点按即可分享您的轨迹。”消息的通知。
    图 4. 系统保存完录制的轨迹后显示的常驻通知。

使用应用菜单录制

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

如需使用 System Tracing 应用菜单录制系统轨迹,请完成以下步骤:

  1. 启用开发者选项
  2. 打开开发者选项设置屏幕。在调试部分中,选择 System Tracing。System Tracing 应用随即打开。

    或者,如果您已设置 System Tracing 功能块,则可以点按并按住该功能块以进入 System Tracing 应用。

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

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

  5. (可选)选择长期轨迹,让系统持续将轨迹保存到设备的存储空间。对于此选项,请设置最大长期轨迹大小最大长期轨迹时长限制。

  6. 启用录制轨迹开关(即图 5 中突出显示的内容)。该功能块会变为启用状态,并且系统会显示常驻通知,通知您系统正在录制轨迹,如图 3 所示。

    图 5. “System Tracing”设置中的录制轨迹开关。
  7. 在您的应用中执行您希望系统检查的操作。

  8. 通过停用录制轨迹开关来停止跟踪。

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

共享系统轨迹

System Tracing 应用可帮助您在多个不同工作流中共享系统轨迹结果。在搭载 Android 10(API 级别 29)或更高版本的设备上,轨迹文件会使用 .perfetto-trace 文件扩展名保存,并可在 Perfetto 界面中打开。在搭载较旧 Android 版本的设备上,轨迹文件会使用 .ctrace 文件扩展名(表示 Systrace 格式)保存。

以消息的形式共享

System Tracing 可让您与设备上的其他应用共享您收集的轨迹。您可以通过电子邮件或 bug 跟踪应用将轨迹发送给开发团队,而无需将设备连接到开发机器。

录制完系统轨迹后,请点按设备上显示的通知,如图 4 中所示。此时会显示平台的 intent 选择器,可让您使用所选的即时通讯应用共享您的轨迹。

通过 Google 文件极客应用共享

在搭载 Android 10(API 级别 29)或更高版本的设备上,轨迹会显示在谷歌文件极客应用中。您可以通过此应用共享轨迹。

使用 adb 下载报告

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

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

轨迹格式之间的转换

您可以将 Perfetto 轨迹文件转换为 Systrace 格式。如需了解详情,请参阅轨迹格式之间的转换

创建 HTML 报告

共享轨迹时,报告本身位于 .perfetto-trace 文件(在搭载 Android 10 或更高版本的设备上)或 .ctrace 文件(其他所有版本)中。

使用基于网络的界面命令行利用轨迹文件创建 HTML 报告。

基于网络的界面

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

对于 Perfetto 文件,请点击 Open trace file。对于 Systrace 文件,请点击 Open with legacy UI。旧版界面的外观和风格与 Systrace 报告一样。

命令行

在终端窗口中运行以下命令,以利用轨迹文件生成 HTML 报告:

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

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