参考网址:android - 无法在Android SDK中查看由Systrace工具生成的HTML跟踪报告 - 堆栈内存溢出 (stackoom.com)
调试的时候,在 windows使用android_sdk\tools\monitor.bat这个工具抓到了trace.html
在浏览器输入chrome://tracing,load这个html时报错:
While importing:
Error: Couldn't create an importer for the provided eventData.
at Import.createImporter_ (chrome://tracing/tracing.js:2020:2071)
at chrome://tracing/tracing.js:2015:167
at Task.run (chrome://tracing/tracing.js:3262:95)
at runAnother (chrome://tracing/tracing.js:3265:371)
at runTask (chrome://tracing/tracing.js:3027:57)
at processIdleWork (chrome://tracing/tracing.js:3032:116)
at window.requestIdleCallback.timeout (chrome://tracing/tracing.js:3025:81)
搜了一遍这个问题的解决思路,有说
有说chrome版本大于50会报错的,尝试下了旧版本的chrome发现仍有问题。
有说使用最新版本的opera可以解析的,尝试后发现还是不行。
还有说需要加一行脚本的,尝试加了之后也没有作用。
最后,在官网上下载了https://source.android.com/devices/tech/debug/perf_traces.zip,使用浏览器成功解析后,怀疑 windows 生成的 trace.html 有问题,因此尝试在ubuntu 18.04下使用命令行的方式,生成了可以解析的trace.html。
windows界面生成的trace.html有问题。
命令行的方式可以参考以下链接 :
以下是介绍如何分析报告的:
了解 Systrace | Android 开源项目 | Android Open Source Project
以下是介绍如何使用命令的:
在命令行上捕获系统跟踪记录 | Android 开发者 | Android Developers
以下网站可以用来打开trace.html:
https://ui.perfetto.dev/#!/viewer
这里摘录命令行的使用方式:
systrace
命令会调用 Systrace 工具,您可以借助该工具收集和检查设备上在系统一级运行的所有进程的时间信息。
本文档说明了如何通过命令行生成 Systrace 报告。在搭载 Android 9(API 级别 28)或更高版本的设备上,您还可以使用“系统跟踪”系统应用生成 Systrace 报告。
如需运行 systrace
,请完成以下步骤:
- 从 Android Studio 下载并安装最新的 Android SDK 工具。
- 安装 Python 并将其添加到工作站的
PATH
环境变量中。 - 将
android-sdk/platform-tools/
添加到PATH
环境变量。此目录包含由systrace
程序调用的 Android 调试桥二进制文件 (adb)。 - 使用 USB 调试连接将搭载 Android 4.3(API 级别 18)或更高版本的设备连接到开发系统。
systrace
命令在 Android SDK 工具软件包中提供,并且可以在 android-sdk/platform-tools/systrace/
中找到。
语法
如需为应用生成 HTML 报告,您需要使用以下语法通过命令行运行 systrace
:
python systrace.py [options] [categories]
例如,以下命令会调用 systrace
来记录设备活动,并生成一个名为 mynewtrace.html
的 HTML 报告。此类别列表是大多数设备的合理默认列表。
$ python systrace.py -o mynewtrace.html sched freq idle am wm gfx view \
binder_driver hal dalvik camera input res
提示:如果要在跟踪输出中查看任务名称,必须在命令参数中添加 sched
类别。
如需查看已连接设备支持的类别列表,请运行以下命令:
$ python systrace.py --list-categories
如果您未指定任何类别或选项,systrace
会生成包含所有可用类别的报告,并使用默认设置。可用类别取决于您所使用的已连接设备。
全局选项
全局选项 | 说明 |
---|---|
-h | --help | 显示帮助消息。 |
-l | --list-categories | 列出您的已连接设备可用的跟踪类别。 |
命令和命令选项
命令和选项 | 说明 |
---|---|
-o file | 将 HTML 跟踪报告写入指定的文件。如果您未指定此选项,systrace 会将报告保存到 systrace.py 所在的目录中,并将其命名为 trace.html 。 |
-t N | --time=N | 跟踪设备活动 N 秒。如果您未指定此选项,systrace 会提示您在命令行中按 Enter 键结束跟踪。 |
-b N | --buf-size=N | 使用 N KB 的跟踪缓冲区大小。使用此选项,您可以限制跟踪期间收集到的数据的总大小。 |
-k functions | 跟踪逗号分隔列表中指定的特定内核函数的活动。 |
-a app-name | 启用对应用的跟踪,指定为包含进程名称的逗号分隔列表。这些应用必须包含 Trace 类中的跟踪检测调用。您应在分析应用时指定此选项。很多库(例如 RecyclerView )都包括跟踪检测调用,这些调用可在您启用应用级跟踪时提供有用的信息。如需了解详情,请参阅定义自定义事件。 如需跟踪搭载 Android 9(API 级别 28)或更高版本的设备上的所有应用,请传递用添加引号的通配符字符 |
--from-file=file-path | 根据文件(例如包含原始跟踪数据的 TXT 文件)创建交互式 HTML 报告,而不是运行实时跟踪。 |
-e device-serial | 在已连接的特定设备(由对应的设备序列号标识)上进行跟踪。 |
categories | 包含您指定的系统进程的跟踪信息,如 gfx 表示用于渲染图形的系统进程。您可以使用 -l 命令运行 systrace ,以查看已连接设备可用的服务列表。 |