- 启用WinScope跟踪
方法一:通过快速设置(Quick Settings)
- 启用开发者选项:首先,需要在设备上启用开发者选项。
- 进入开发者选项:依次转到“开发者选项” > “快捷设置开发者图块”。
- 启用WinScope跟踪:在快速设置中,找到并启用WinScope跟踪。
- 执行窗口转换:在设备上执行所需的窗口转换操作。
- 停用跟踪:窗口转换完成后,再次打开快速设置,点击WinScope跟踪以停用跟踪。
方法二:通过ADB(Android Debug Bridge)
- 启用跟踪:使用ADB命令
adb shell cmd window tracing start 1来启用WindowManager跟踪。 - 执行操作:在设备上执行所需的窗口转换或其他操作。
- 停用跟踪:使用ADB命令
adb shell cmd window tracing stop 1来停用跟踪。 - 获取跟踪文件
跟踪记录会被写入以下两个文件:
/data/misc/wmtrace/wm_trace.winscope(WindowManager跟踪文件)/data/misc/wmtrace/layers_trace.winscope(SurfaceFlinger跟踪文件)
你可以使用ADB的adb pull命令将这些文件拉取到本地计算机上进行进一步分析。
- 使用WinScope工具分析跟踪文件
- 准备WinScope HTML 文件:找到Android项目源码中的WinScope HTML文件(通常位于
/prebuilts/misc/common/winscope/winscope.html)。 - 处理 ADB 问题(如果需要) :如果提示ADB问题,可以使用
python3 winscope_proxy.py命令生成一个token,并将该token添加到WinScope HTML文件的主页中。 - 加载并分析跟踪文件:使用Chrome浏览器打开WinScope HTML文件,并将从设备上拉取的跟踪文件加载到WinScope中进行分析。
- 选择并查看信息:在WinScope中选择你想查看的信息(如SurfaceFlinger和Window的相关数据),点击“Start Trace”开始分析。
注意事项
- 确保你的设备是userdebug或eng构建的,因为这些构建类型才包含必要的调试工具和功能。
- 在使用WinScope之前,最好先熟悉Android的窗口管理系统(WindowManager)和SurfaceFlinger的工作原理,以便更好地理解跟踪文件中的内容。
- 不同版本的源代码启动winscope_proxy.py 目录是不一样的,有些需要进入到src/adb