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

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

在解决应用中与性能相关的错误(例如启动速度慢、转换速度慢或界面卡顿)时,录制跟踪记录特别有用。

录制系统跟踪记录

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

使用“快捷设置”图块录制

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

设置图块

图 2. System Tracing 应用中的 Show Quick Settings tile 开关

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

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

    图 1. 快捷设置面板中的 System Tracing 图块

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

完成系统跟踪记录的录制

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

  1. 点击系统跟踪图块,该图块带有“录制跟踪记录”标签。该图块会变为启用状态,并且系统会显示常驻通知,通知您系统正在录制跟踪记录,如图 3 所示:

    包含消息“Trace is being recorded. Tap to stop tracing.”的通知。
    图 3. 启动设备上系统跟踪后出现的常驻通知
  2. 在您的应用中执行您希望系统检查的操作。

  3. 完成这些操作后,通过点按快捷设置面板中的 System Tracing 图块或点按“System Tracing notification”来停止跟踪。

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

    包含消息“Trace saved. Tap to share your trace.”的通知。
    图 4. 系统保存完录制的跟踪记录后出现的常驻通知

使用应用菜单录制

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

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

  1. 启用开发者选项(如果尚未启用此选项)。
  2. 打开开发者选项设置屏幕。在 Debugging 部分,选择 System Tracing。System Tracing 应用随即打开。

    或者,如果您已设置 System Tracing 图块,则可以长按该图块以进入 System Tracing 应用。

  3. 请确保已选中 Trace debuggable applications,以包含已在系统跟踪中启用调试功能的应用。

  4. (可选)选择对跟踪记录的系统和传感器调用的 Categories,并选择 Per-CPU buffer size(以 KB 为单位)。选择与您正在测试的用例相对应的类别,例如用于测试蓝牙操作的 Audio 类别或用于堆分配的 Memory 类别。

    图 5. System Tracing 应用中的 Record trace 开关
  5. (可选)选择 Long traces 可启用持续保存到设备存储空间的跟踪记录。如果选择此选项,您必须设置 Maximum long trace sizeMaximum long trace duration 上限。

  6. 启用 Record trace 开关,如图 5 所示。该图块会变为启用状态,并且系统会显示常驻通知,通知您系统正在录制跟踪记录(图 3)。

  7. 在您的应用中执行您希望系统检查的操作。

  8. 完成这些操作后,可通过停用 Record trace 开关来停止跟踪。

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

共享系统跟踪记录

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

以消息的形式共享

System Tracing 允许您与设备上的其他应用共享您收集到的跟踪记录。这样,您就可以通过电子邮件或错误跟踪应用将跟踪记录发送给开发团队,而无需将设备连接到开发机器。

录制完系统跟踪记录后,请点按设备上显示的通知(参见图 4)。此时会显示平台的 intent 选择器,可让您使用所选的短信应用共享您的跟踪记录。

通过 Google 文件极客应用共享

在搭载 Android 10(API 级别 29)的设备上,跟踪记录会显示在 Google 文件极客应用中。如果需要,您可以通过此应用共享跟踪记录。

使用 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 开源项目中下载