frameworks 之 Winscope 工具
- [1. 手机端开启](#1. 手机端开启)
- [2. 加载追踪的文件](#2. 加载追踪的文件)
-
- [2.1 Android12](#2.1 Android12)
- [3. 分析文件](#3. 分析文件)
Winscope 是一款 Web 工具,可以让用户在动画和转换期间和之后记录、重放和分析多个系统服务的状态。Winscope 将所有相关的系统服务状态记录在一个跟踪文件中。使用带有跟踪文件的 Winscope 界面,您可以通过重放、单步执行和调试转换来针对每个动画帧检查这些服务的状态
1. 手机端开启
- 进入设置 -> 系统 -> 开发者选项 -> 快捷设置开发者模块。
- 勾选 winscope 追踪
- 下拉状态栏菜单点击即启动,再次点击即暂停
记录下的文件夹在 /data/misc/wmtrace 下,文件如下
名称 | 意义 |
---|---|
ime_trace_clients.winscope | 输入法相关 |
ime_trace_managerservice.winscope | 输入法相关 |
ime_trace_service.winscope | 输入法相关 |
layers_trace.winscope | SurfaceFlinger 图层相关 |
wm_log.winscope | |
wm_trace.winscope | WindowManager相关 |
运行后 可通过 拉到电脑下
bash
adb pull /data/misc/wmtrace
2. 加载追踪的文件
2.1 Android12
对应 html 路径如下
prebuilts/misc/common/winscope 点击下面的Index.html 用google浏览器打开。
3. 分析文件
一般导入 layers_trace.winscope 和 wm_trace.winscope 查看黑屏问题。
字段 | 意义 |
---|---|
Simplify names | 显示简短的名称 |
Only visible | 显示可见的 |
Flat | 折叠 |
Show Diff | 表示与上一帧的差别 |
下方进度条 | 表示对应的进度,左右代表前进后退 |
Properties | 选中图层的属性 |
选择勾选 diff
- 绿色的 表示 新增
- 红色的 表示 删除 ,当带标签move的时候表示 当前图层移动到 另外图层 如584 移动到 600下面的
查看黑屏可以选择 flat 跟 Only visible ,这样留意哪个图层消失并且过一会重新出现
如下图 ,这时候 586 图层可见
下一帧 消失 并且持续好多帧不可见
最后 重新添加了 604图层 可知是中间丢失了导致黑屏