Android 9版本以后在设置——开发者选项中内置了一个【系统追踪】(System tracing)。该功能顾名思义,提供了不借助adb抓取systrace的工具。
抓取过程比较简单,分为两种:
I. 抓取
1、直接抓取
在设置——系统——开发者选项——系统跟踪(不同软件可能路径不太一样)中设置需要录制的类别(Categories)、缓冲区大小(Buffer Size)
打开【录制跟踪记录】(Record trace)开始录制
弹出通知后即可开始复现问题或是进行特定操作
完成以后点击通知栏中的【点按即可停止跟踪】(Tap to stop tracing)即可停止并保存
2、通过状态栏快捷按钮抓取
在设置——系统——开发者选项——系统跟踪(不同软件可能路径不太一样)中设置需要录制的类别(Categories)、缓冲区大小(Buffer Size)
打开【显示“快捷设置”图块】(Show Quick Settings tile)
在下拉状态栏中找到【录制跟踪记录】(Record trace)并点击开始录制
弹出通知后即可开始复现问题或是进行特定操作
完成以后可再次点击快捷设置中的图标,或点击通知栏中的【点按即可停止跟踪】(Tap to stop tracing)停止并保存
II. 获取ctrace文件
1、通过点击通知栏进行分享
录制并保存完成后会在通知栏显示【已保存追踪记录】(Trace saved),点击即可通过各种分享界面将该文件分享出来
2、通过adb pull获取
保存的trace文件存放于/data/local/traces,可以通过adb pull进行提取
III. 转换ctrace文件
提取的trace文件是扩展名为ctrace的二进制文件,无法直接使用Chrome的chrome://tracing导入分析,需要借助sdk提供的systrace工具进行转换:
systrace --from-file trace-file-name.ctrace
转换完成后会在原文件同目录下生成同名的.html文件,届时就可以通过Chrome导入进行分析了。
更多参考详见Android官网介绍:https://developer.android.google.cn/studio/profile/systrace-on-device
关于systrace的分析机巧可以参考官网介绍:https://developer.android.google.cn/studio/command-line/systrace?hl=en#java