干货:aosp14/15版本Winscope各个功能使用详细说明(一)

背景:

只要做过窗口显示的开发同学都应该对Winscope这个神器工具都比较了解,马哥的wms课程也有详细讲解这这个Winscope相关使用,而且用它分析解决了我们的原生壁纸闪黑问题,其实所有的fw层面的闪黑,黑屏,闪屏问题都是需要使用Winscope工具才可以,不过Winscope也在每个版本都有更新,特别是新版本aosp14/15,画面UI有了较大的调整,针对新版本的Winscope马哥这边也一直没给大家详细讲解相关的使用方法,都是完全复用以前版本Winscope的方法,本文就针对新版本的Winscope如何使用来展开详细剖析。

分析跟踪记录

在加载了跟踪记录之后,点击 View traces 以直观呈现已上传的跟踪记录。每条跟踪记录的标签页都会显示在窗口的顶部面板上。如果上传的文件包含相关跟踪记录,屏幕录制跟踪记录或屏幕截图的浮动视图会叠加在屏幕上:

通过 Winscope 查看跟踪记录

图 1. 通过 Winscope 查看跟踪记录。

以下部分介绍了 View traces 界面上的界面元素。

矩形

在这里插入图片描述就是上图红框部分的区域的详细介绍。

一个适用于 Winscope 视图(例如 WindowManager、SurfaceFlinger 和 ViewCapture)的 LAYERS 面板,包含来自跟踪记录的矩形元素,可直观地呈现其在 Z 轴上的位置和顺序。

通过 LAYERS 面板上的导航控件,您可以修改矩形图层的绘制模式,以及它们的间距和旋转方式:

矩形控件

图 2. 矩形控件。

下面来对上面控件挨个剖析
在这里插入图片描述

渐变格式
注意:Winscope 默认使用渐变格式。

如需更有效地检查层次结构中的所有元素,您可以使用矩形格式按钮将矩形绘制格式切换为渐变。在渐变格式中,矩形格式按钮会变为浅灰色。

在此模式下,每个矩形的透明度会根据其 Z 顺序而降低,Z 顺序较高的矩形会更加半透明。这样一来,您就可以看到层次结构中的所有元素,而无需担心矩形相互遮挡:

矩形渐变

图 3. 矩形渐变。
不透明度格式

如需将矩形绘制格式更改为“不透明度”,请点击矩形格式按钮。在“不透明度”格式中,矩形格式按钮会变为深灰色。

在此模式下,每个矩形都会根据其不透明度(例如 Surface 或 View 不透明度)进行绘制:

矩形不透明度

图 4. 矩形不透明度。
线框图格式

如需将矩形表示法更改为“线框图”,请点击矩形格式按钮。这种表示法可让您更轻松地检查和分析层次结构中的各个元素。在“线框图”格式下,矩形格式按钮会变成没有阴影的轮廓:

矩形线框图

图 5. 矩形线框图。
旋转

使用旋转滑块可在 0 到 45 度之间更改矩形的视角,以便您发现元素离开屏幕的情况:

矩形旋转

图 6. 矩形旋转。

间距

使用间距滑块控制层间距,创建扁平化或更分散的视图,以便更好地检查元素的 Z 轴排序:

矩形朝向

图 7. 矩形朝向。
显示屏和窗口选择

在 SurfaceFlinger 视图中,当在具有多个显示屏的设备上录制数据时,系统会显示一个菜单,其中包含可用的屏幕,以便您仅选择感兴趣的显示屏。

在 ViewCapture 中,当录制多个系统窗口(例如通知栏、任务栏和启动器)时,菜单会列出可用的窗口。
平移和缩放

您可以通过点击矩形区域并拖动鼠标,水平或垂直地调整矩形的位置。如需放大、缩小或重置缩放级别,您可以使用滚轮或控件栏上的缩放按钮。

层次结构

Winscope 查看器通常会包含层次结构查看器。图 1 中的查看器会根据所分析的跟踪记录描绘各种层次结构。例如,查看器可以显示 WindowManager 中的窗口层次结构或系统界面窗口中的视图层次结构。

如需了解特定层次结构类型,请参阅各条跟踪记录的相关部分。

本部分介绍了常规层次结构用法,例如 Show diff、Show only V、Flat 和 Search 功能。

层次结构控件

图 8. 层次结构控件。
Show diff

启用 Show diff 功能后,Winscope 会自动监控并显示当前状态与之前状态之间的变化。Show diff 功能会以红色突出显示已移除的元素,以蓝色突出显示已修改的元素,并以绿色突出显示已创建的新元素。这种直观表示法可让您更快地识别和了解两种状态之间的差异,从而更轻松地跟踪更改和发现潜在问题。
注意:差异是在运行时计算的,此操作会增加延迟。此模式处于活动状态时,跟踪导航的响应速度会降低。

“Show diff”层次结构

图 9. “Show diff”层次结构。
搜索和过滤

层次结构查看器提供使用正则表达式 (regex) 的搜索功能。此过滤器同时定位到元素的名称和其值(对于属性)。当过滤器与层次结构中的子元素匹配时,整个父级链(一直到树的根)都会变得可见,如下图所示:

“Search”层次结构

图 10. “Search”层次结构。
Show only V

借助 Show only V 功能,您可以过滤掉层次结构中的所有隐藏元素。默认情况下,Winscope 会同时显示可见元素和不可见元素。可见元素以黑色绘制,而不可见元素则以灰色绘制。

Flat

Flat 按钮通过消除元素之间的父子关系来重新组织层次结构。此操作会在同一层级呈现所有元素。与 Show only V 选项结合使用时,生成的层次结构仅显示可见元素,不包括其父元素,如以下图所示:

“Flat”层次结构

图 11. “Flat”层次结构。

属性

在 Winscope 中,许多查看器都集成了媒体资源查看器。此查看器会显示与从层次结构视图中选择的元素关联的各种属性列表。例如,查看器可以显示 WindowManager 中的 activity 属性或系统界面中的视图属性。

如需了解特定属性,请参阅有关 SurfaceFlinger、WindowManager 和 ViewCapture 跟踪记录的部分。

本部分介绍了“Show diff”“Search”和“Show defaults”功能中的常规层次结构。
Show diff

Show diff 功能的使用方式与层次结构视图中的“Show diff”相同。
搜索和过滤

Search 功能的使用方式与层次结构视图中的“Search”相同。
Show defaults

默认情况下,Winscope 仅显示修改后的属性值,这些值是各自数据类型的非默认值。例如,Winscope 会省略布尔值的 false、整数的 0、对象的 null 和数组的 []。这种简化方式可简化用户可见的属性列表。不过,在某些情况下,全面了解所有元素相关信息会很有帮助。在这种情况下,Show defaults 选项会显示 Winscope 中的所有可用属性,包括值为空或 null 的属性。

属性默认内容

图 12. 属性默认内容。
一般快捷键

Winscope 支持以下快捷方式:

快捷方式

图 13. 常规快捷方式。

参考链接:
https://source.android.google.cn/docs/core/graphics/winscope/analyze/overview

更多framework实战开发干货,请关注“千里马学框架”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值