1.perfetto是谷歌开发的一个SystemTrace工具,并且它是运行在Android设备里面的,做为系统服务存在。因此我们想要获取trace文件,并不需要在电脑上安装什么软件,只需要通过adb联接到手机,就可以通过命令抓取了。
2.perfetto工具是在Android9(P)上就已经存在,当然更早的版本是没有perfetto的。在Android9(P)或者Android10(Q)是默认关闭的;而在Android11(R)上是默认打开的。
通过查看Android设备中的system/bin文件夹,可以看到存在perfetto,如下:
3.执行抓取的命令
adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 20s sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory
-o,表示要录制的目标文件的位置和名字
-t,表示录制的时间,默认是10s
后面跟的sched…memory,都是对应的需要抓取的模块,这里可以根据自己的需求做一些调整
会生成一个20s的trace文件,然后通过pull命令把trace文件导出到电脑上,如下:
4.把导出的trace文件用perfetto官网的工具打开,官网地址ui.perfetto.dev/#!/viewer
,打开的效果如下:
5.另外还有一种脚本的抓取方法,配合config的方式,可以更准确和高效地抓取trace,不过我电脑不能同步下来那个运行脚本,所以没有尝试。但是还有一种抓取trace的方式,就是在perfetto UI网页界面perfetto UI直接抓取,如下: