背景
在性能优化中perfetto抓取的方式相对比较多,不过大体上分为以下几种方式:
1、直接android设备上使用perfetto命令抓取
2、使用aosp中提供相关脚本抓取
3、直接使用perfetto网页在chrome浏览器直接抓取
第1,2两种方式都有介绍过,只有第3种浏览器直接抓取这种方式没有介绍过,所以本文主要来介绍第3种方式来抓取的相关实战方法。
chrome浏览器直接抓取
1、进入抓取页面
点击进入主页
https://ui.perfetto.dev/
左边点击 “Record new trace”按钮进入如下画面
2、如何发现设备(最大的障碍)
默认情况下选着android部分,默认链接设备方式是“WebUsb”这种方式
但是比较遗憾大家发现我们的模拟器起来后,这里根本无法发现我们的设备
其实这个也就是以前没有给大家介绍这种方式抓取的原因哈,chrome浏览器连模拟器这个设备都发现不了,谈何抓取。
最后发现确实模拟器设备用WebUsb方式无法发现设备,原因暂时没有追究,不过尝试实体机手机确实是可以发现的,插上实体手机后就会有相关提示,当然前提需要手机需要开启usb调试相关。
3、实体手机设备抓取
点击上面登录按钮后显示如下:
如果要抓取trace只需要点击上面的“Start tracing”按钮既可以,期间也会详细显示抓取进度,相关抓取的参数可以直接点击左边这些既可以。
抓取完成会自动跳转显示trace相关文件
因为采用WebUsb这种方式,它提示中也写了对设备进行了独占,建议使用第二种方式
This is the easiest option to use but requires exclusive access to the device. If you are an android developer and use ADB, you should use the websocket option instead.
4、如何抓取自编译模拟器的?
因为用WebUsb方式无法发现自编译模拟器的设备,所以只能考虑用其他方式发现设备:
点击这种“ADB + WebSocket”方式后,发现有一堆错误提示,无法链接发现设备。
建议我们操作如下几步:
adb start-server
curl -LO get.perfetto.dev/tracebox
chmod +x ./tracebox
./tracebox websocket_bridge
上面其实看出,本质上就是下载个tracebox文件,然后执行这个tracebox文件既可以,但是下载这个tracebox文件一般国内网络都不行哈,所以这里可能又会阻碍一批人,不过这里马哥给大家提供一个 ubuntu 64位可以直接执行的文件
https://share.weiyun.com/djrDvGWU 密码:1q95lf
然后运行如下:
这里刷新一些画面就可以看到我们的模拟器设备了,可以进行正常抓取了
更多framework实战干货,请关注下面“千里马学框架”