背景:
经常有学员朋友会问到关于Winscope相关的一些使用问题,这块本来之前也分享过比较多的文章,这些文章主要涉及aosp13,14,15版本的。
学员们涉及的问题主要有如下几个:
1、每个版本的Winscope应该如何使用,每个版本都有差异,搞不明白应该怎么样
2、Winscope是否可以用于windows呢?
3、Winscope的版本直接兼容原则是怎么样的?
各个版本Winscope使用方式汇总:
aosp13版本:
抓取方式1,adb 命令方式离线抓取Winscope数据:
1、启用抓取windows和sf数据
WindowManager:
adb shell cmd window tracing start
SurfaceFlinger:adb shell su root service call SurfaceFlinger 1025 i32 1
2、停用抓取
WindowManager: adb shell cmd window tracing stop
SurfaceFlinger:adb shell su root service call SurfaceFlinger 1025 i32 0
3、获取抓取pb文件
WindowManager: adb pull /data/misc/wmtrace/wm_trace.pb wm_trace.pb
SurfaceFlinger:adb pull /data/misc/wmtrace/layers_trace.pb layers_trace.pb
抓取方式2,手机上设置开启抓取按钮
手机直接设置中开启相关抓取按钮,文章窗口
https://blog.youkuaiyun.com/learnframework/article/details/129432374
抓取方式3,html在线抓取Winscope数据
打开html后,会有提示,要基于aosp源码执行对应的python既可以
test@test:~/aosp$ python3 $ANDROID_BUILD_TOP/development/tools/winscope/adb_proxy/winscope_proxy.py
使用查看Winscope方式
直接使用html进行查看既可以:
直接在aosp源码的如下目录有html文件进行打开
prebuilts/misc/common/winscope/winscope.html
aosp14版本:
抓取方式:
抓取方式基本和aosp13没有大的差异可以完全适用参考
使用查看方式:
这个asop14以后aosp源码不会再自带Winscope的html,需要大家aosp源码进行编译,编译参考下面文章
android 14版本的winscope编译使用-手把手教你编译成功不报错
编译出来了html后,14版本是可以直接使用html的,所以可以共享编译html给别人直接chrome浏览器打开。
aosp15版本:
抓取方式:
adb方式抓取方式
这块和老版本有较大差异,adb方式抓取方式(这个请购买了马哥ShellTransition课程中有说明)。
aosp手机界面抓取抓取方式,参考如下:
html在线抓取和老版本一样
使用查看方式:
这块其实也是和14一样,参考14如何编译的html,但是15版本哪怕编译出来了html,也无法直接传递给别人使用,要传递html给其他人使用还需要参考如下文章:
Windows系统是否可以使用Winscope?
这个Winscope其实本质上是就是一个网页,所以关于Winscope在Windows的使用有如下结论:
1、Winscope的数据获取后,只是查看分析完全可以使用html在chrome浏览器进行打开
2、抓取数据方式,一般不可以使用html在线抓取方式,因为无法成功执行如下winscope_proxy.py 的python脚本
总结:
windows可以正常使用Winscope进行相关分析,只是不支持在线实时抓数据,需要使用adb抓取或者手机抓取到Winscope数据,导入html方式。
多个安卓版本兼容问题
兼容的原则如下:
1 高版本的Winscope相关功能支持低版本的安卓设备抓取和展示
因为Winscope这个网页软件肯定是会考虑老版本兼容的功能,所以一般Winscope网页是新的,是可以兼容抓取老版本安卓设备的Winscope数据,比如aosp 15版本Winscope支持抓取展示aosp13设备的数据。
2 低版本的Winscope相关功能一般不支持高版本的安卓设备
这里说的是一般并不是绝对,其实本质就是只要各个版本之间设备上抓取的Winscope的数格式差异不大可以兼容就可以,但是一般aosp13以后几个版本这块数据格式都有修改,所以13版本Winscope不支持抓取展示14,15设备版本数据。
总结就是Winscope这个网页或者软件版本一般不可以比设备版本低,当然如果两个版本差异比较小这种也是可以的。
下面举个案例:
下面以一个安卓设备版本是13
但是用aosp15的Winscope来进行抓取
抓取后结果如下:
可以发现确实aosp15版本是完全可以抓取和展示aosp13版本的设备数据。
文章来源:https://mp.weixin.qq.com/s/j7lzAurE2K5PBjMrjGcfCw
更多framework实战干货,请关注下面“千里马学框架”