WinScope 提供了用于在窗口转换期间和转换后记录和分析 WindowManager 状态和 SurfaceFlinger 状态的基础架构和工具。WinScope 将所有相关的系统服务状态记录在一个跟踪文件中,您可以使用该文件重现并逐步查看转换。
抓winscope相关文件:
快捷键
通过快捷设置记录跟踪情况,请执行以下操作:
启用开发者选项。
依次转到开发者选项 > 快捷设置开发者图块。
启用 WinScope 跟踪。
打开快捷设置。
点按 Winscope 跟踪以启用跟踪。
在设备上执行窗口转换。
窗口转换完成后,打开快捷设置,然后点按 Winscope 跟踪记录以停用跟踪记录。
跟踪记录会被写入 /data/misc/wmtrace/wm_trace.winscope 和 /data/misc/wmtrace/layers_trace.winscope,同时还会包含在错误报告中。
通过adb pull /data/misc/wmtrace
拉到本地。
adb
WindowManager 跟踪记录
启用跟踪:
adb shell cmd window tracing start
停用跟踪:
adb shell cmd window tracing stop
获取跟踪文件:
adb pull /data/misc/wmtrace/wm_trace.winscope wm_trace.winscope
SurfaceFlinger 跟踪
启用跟踪:
adb shell su root service call SurfaceFlinger 1025 i32 1
停用跟踪
adb shell su root service call SurfaceFlinger 1025 i32 0
获取跟踪文件
adb pull /data/misc/wmtrace/layers_trace.winscope layers_trace.winscope
生成状态转储文件
WinScope 可以从错误报告中读取 WindowManager 状态和 SurfaceFlinger 状态的快照。错误报告会将状态信息以单独的 proto 文件的形式存储在 proto 文件夹中。如需使用 adb 生成状态转储文件,请运行以下命令。
WindowManager
adb exec-out dumpsys window --proto > window_dump.winscope
SurfaceFlinger
adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.winscope
使用web进行分析
通常使用prebuilts/misc/common/winscope下的winscope.html
点击Add FILE
结合上篇文章的Demo,对window和surfaceflinger来进行分析,
https://blog.csdn.net/u013574207/article/details/133921524?spm=1001.2014.3001.5502
能看到有window和surfaceflinger两部分内容
选取surfaceflinger来进行分析,能看到写的demo浮窗相对应的内容,并可以看到父节点。
通过移动时间戳可以来看该view的移动和对应的事件