安卓闪黑工具:aosp16版本Winscope之搜索功能剖析

背景:

在aosp16的Winscope体验时候发现多了数据的搜索功能,也体验了一下,这个新功能本身Winscope也自带了很多指导提示,主要是用来解决Winscope有时候寻找某个数据,某个layer时候的不便,本文来详细介绍一下这块搜索如何使用的内容。
体验Winscope搜索功能相关:
在这里插入图片描述

Winscope上数据记录搜索

使用 SQL 在 Winscope Perfetto 跟踪记录中查找特定状态。使用 Winscope 界面中的全局搜索查看器运行查询并直观呈现表格化结果:

搜索查看器标签页

图 1. 搜索查看器标签页

借助搜索查看器,您可以针对 Perfetto 跟踪记录编写和运行自定义 SQL 查询,并访问近期和已保存的查询。Winscope 提供了专用的 SQL 视图,以帮助搜索 SurfaceFlinger 和事务跟踪记录。

注意:我们计划添加辅助视图,以帮助搜索其他类型的跟踪记录。
所有视图应遵守以下规则:

对于 property 和 flat_property 列:

属性名称采用蛇形命名法,例如 LayerProto 中的 visible_region。
点表示法用于表示嵌套属性,例如 visible_region.rect。

property 中的重复字段使用方括号进行区分:

例如,在重复字段 visible_region.rect 的两个实例中,top 字段分别由 visible_region.rect[0].top 和 visible_region.rect[1].top 表示。

flat_property 中的重复字段无法区分:

例如,在重复字段 visible_region.rect 的两个实例中,top 字段在两个实例中都由 visible_region.rect.top 表示。

对于 value 和 previous_value 列:

布尔值由 ‘0’ (False) 或 ‘1’ (True) 表示。

SurfaceFlinger SQL 视图

SurfaceFlinger proto 数据使用以下格式:

图层数据采用 LayerProto 格式。

层次结构根数据采用 LayersSnapshotProto 格式。

如需搜索图层数据,请使用 sf_layer_search 视图。此视图包含以下列:

列	说明
state_id	图层所属条目的唯一 ID
ts	图层所属条目的时间戳
layer_id	图层 ID
parent_id	父级的图层 ID
layer_name	图层名称
property	考虑重复字段的属性名称
flat_property	属性名称不考虑重复字段
value	以字符串格式显示的属性值
previous_value	上一个条目的属性值(字符串格式)

如需搜索层次结构根数据,请使用 sf_hierarchy_root_search 视图。此视图包含以下列:

列	说明
state_id	条目的唯一 ID
ts	条目的时间戳
property	考虑重复字段的属性名称
flat_property	属性名称不考虑重复字段
value	以字符串格式显示的属性值
previous_value	上一个条目的属性值(字符串格式)

示例查询
查找 IME 层具有有效屏幕边界的所有帧:

SELECT ts, value, previous_value FROM sf_layer_searchWHERE layer_name like 'IME%'AND property='screen_bounds.bottom'AND value<='24000'

注意:我们计划向 SurfaceFlinger 跟踪记录添加更准确的 isVisible 属性。
查找 Taskbar 层 color.a (alpha) 发生变化的所有帧:

SELECT ts, value, previous_value FROM sf_layer_searchWHERE layer_name like 'Taskbar%'AND property='color.a'AND value!=previous_value
查找 Wallpaper 底部边界小于或等于 2400 的所有帧:SELECT ts, value, previous_value FROM sf_layer_searchWHERE layer_name LIKE 'Wallpaper%'AND property='bounds.bottom'AND cast_int!(value) <= 2400

列出具有有效叠加层的显示设备的所有属性:

SELECT STATE.* FROM sf_hierarchy_root_search STATE_WITH_DISPLAY_ON
INNER JOIN sf_hierarchy_root_search STATEON STATE.state_id = STATE_WITH_DISPLAY_ON.state_idAND STATE_WITH_DISPLAY_ON.flat_property='displays.layer_stack'AND STATE_WITH_DISPLAY_ON.value!='4294967295'AND STATE.property LIKE CONCAT(SUBSTRING(STATE_WITH_DISPLAY_ON.property,0,instr(STATE_WITH_DISPLAY_ON.property, ']')),'%')

事务 SQL 视图

事务 proto 数据使用 TransactionTraceEntry 格式。

如需搜索事务数据,请使用 transactions_search 视图。此视图包含以下列:

列	说明
state_id	proto 属性所属条目的唯一 ID
ts	proto 属性所属条目的时间戳
transaction_id	事务 ID(如有)
property	考虑重复字段的属性名称
flat_property	属性名称不考虑重复字段
value	以字符串格式显示的属性值

示例查询
找到应用了事务的帧,以将层 x 位置更改为 -54.0:

SELECT ts, transaction_id, value FROM transactions_searchWHERE flat_property='transactions.layer_changes.x'AND value='-54.0'

找到添加 ImeContainer 层的帧:

SELECT ts FROM transactions_searchWHERE flat_property='added_layers.name'AND value='ImeContainer'

ShellTransition SQL 视图

过渡 proto 数据使用 ShellTransition 格式。

如需搜索过渡数据,请使用 transitions_search 视图。此视图包含以下列:

列	说明
ts	分派时间 - 如果有发送时间,则回退到发送时间,否则为 0
transition_id	过渡 ID
property	考虑重复字段的属性名称
flat_property	属性名称不考虑重复字段
value	以字符串格式显示的属性值

示例查询
查找由 DefaultMixedHandler 处理的过渡的属性:

  SELECTPROPS.ts,PROPS.transition_id,PROPS.property,PROPS.valueFROM transitions_search HANDLER_MATCHINNER JOIN transitions_search PROPSON HANDLER_MATCH.transition_id = PROPS.transition_idWHERE HANDLER_MATCH.property = 'handler'AND HANDLER_MATCH.value LIKE "%DefaultMixedHandler"ORDER BY PROPS.transition_id, PROPS.property

ViewCapture SQL 视图

ViewCapture proto 数据使用 View 格式。

如需搜索 ViewCapture 数据,请使用 viewcapture_search 视图。此视图包含以下列:

列	说明
state_id	视图所属状态的唯一 ID
ts	视图所属状态的时间戳
package_name	软件包名称
window_name	窗口名称
class_name	查看类名称
property	考虑重复字段的属性名称
flat_property	属性名称不考虑重复字段
value	以字符串格式显示的属性值
previous_value	上一个状态的属性值(字符串格式)

示例查询
查找 SearchContainerView 在 y 方向移动时的所有状态:

  SELECT * FROM viewcapture_searchWHERE class_name LIKE '%SearchContainerView'AND flat_property='translation_y'AND value!=previous_value

ProtoLog SQL 表

ProtoLog proto 数据使用 ProtoLogMessage 格式。此视图包含以下列:

列	说明
ts	日志的时间戳
level	日志级别
tag	日志记录组标记
message	日志消息
stacktrace	堆栈轨迹(如果有)
location	消息的来源代码位置

示例查询
查找消息中包含 transition 的所有日志:

SELECT ts, message, location FROM protologWHERE message LIKE '%transition%'

查找包含有效事务 ID 的所有日志:

CREATE PERFETTO VIEW valid_tx_ids ASSELECT DISTINCT transaction_id FROM transactions_searchWHERE transaction_id IS NOT NULL AND transaction_id != '0';SELECT TRANS.transaction_id, message FROM valid_tx_ids TRANS
INNER JOIN protolog LOGSON LOGS.message LIKE CONCAT('%', TRANS.transaction_id, '%');

运行查询

使用左侧面板时,系统会开始搜索跟踪记录。此过程需要几秒钟的时间。在开始时,时间轴不可用。

开始跟踪记录搜索后,在搜索框中输入查询,然后点击 Run Search Query 或按键盘上的 Enter 以运行该查询。

完成后,结果表格会显示在中间面板中。您的查询会显示在搜索框下方,并带有一个在会话之间保存查询的字段。

您可以通过点击左侧面板中的 Saved 标签页来访问已保存的查询,也可以通过点击 Recent 标签页来访问最近运行的查询:

搜索查看器左侧面板

图 2. 搜索查看器左侧面板。

结果

所有查询都会返回表格式结果,并在可滚动视图中显示,其交互行为类似于基于日志的跟踪记录查看器(例如 Transactions 和 ProtoLog):

搜索查看器结果

图 3. 搜索查看器结果。

如果生成的表格包含 ts 列,则该列中的值会被解释为时间戳,并作为新行条目添加到时间轴叠加层中。点击此行,然后使用向左和向右箭头键在条目之间导航:

搜索时间轴

图 4. 搜索时间轴。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/920392.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/920392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 mcp-use 构建极简 Web 自动化测试智能体「喂饭教程」

使用 mcp-use 构建极简 Web 自动化测试智能体「喂饭教程」 引言 一、项目概述 二、技术架构 1. MCP协议简介 2. 基于mcp-use库的核心组件 2.1 MCPAgent使用 2.2 MCPClient配置 三、环境搭建 1. 依赖安装 2. 环境配置 3. MCP服务器配置 4. 验证MCP服务器连接 5.创建测试脚本 四、…

密码管理中

第一部分&#xff1a;弱加密算法的危害使用弱加密算法&#xff08;如 MD5, SHA-1&#xff0c;甚至不加盐的简单哈希&#xff09;来保护密码是极其危险的&#xff0c;主要危害体现在以下几个方面&#xff1a;1. 极易被破解&#xff08;彩虹表攻击&#xff09;原理&#xff1a;弱…

【mysql】解决Python连接MySQL报错:缺少cryptography库

解决Python连接MySQL报错&#xff1a;缺少cryptography库 在使用 Python 连接 MySQL 数据库时&#xff0c;有时可能会遇到这样的错误&#xff1a; RuntimeError: cryptography package is required for sha256_password or caching_sha2_password auth methods这篇文章将带你快…

告别Java依赖!GISBox三维场景编辑+服务发布一站式工具横评

在地理信息系统&#xff08;GIS&#xff09;技术快速发展的今天&#xff0c;选择一款合适的工具对于提升工作效率和实现项目目标至关重要。GISBox与GeoServer作为两款各具特色的GIS解决方案&#xff0c;分别面向不同的用户需求和应用场景。本文将从界面阅读感、安装复杂度、服务…

智能客服多智能体(知识库问答+情绪感知+工单路由)

一、概述 —— 目标与高层需求 目标:构建一个生产级的智能客服流水线,用多智能体(agent)分工协作完成用户问答、情绪识别并在必要时自动生成/路由工单(ticket)。系统应满足: 高答复准确率:通过 RAG(检索增强生成)把回复基于公司知识库(SOP、FAQ、产品文档)。([Gra…

消息队列核心问题解决方案:从丢失到重复消费的全方位保障

在分布式系统中,消息队列作为解耦、削峰、异步通信的核心组件,其可靠性直接决定了整个系统的稳定性。然而,“消息丢失”“重复消费”“消息积压”等问题却如同隐雷,稍有不慎便会引发数据不一致、业务异常等严重后果。本文将围绕“如何保证消息不丢失、不重复消费”这一核心…

API协作云:API→MCP极速构建MCP服务

一、背景与行业趋势数字化时代&#xff0c;API 是企业互联核心&#xff0c;API 协作云则实现连接能力跃升&#xff1a;高效管理 API 全生命周期&#xff0c;突破传统接口管理局限&#xff0c;通过标准化设计、自动化测试和可视化监控&#xff0c;让团队高效协作&#xff0c;轻松…

重塑可观测性成本:解析Coralogix的智能成本优化之道

在云原生与微服务架构成为主流的今天&#xff0c;可观测性&#xff08;Observability&#xff09;已成为企业确保系统稳定、快速排障的必需品。然而&#xff0c;随着数据量的爆炸式增长&#xff0c;传统的可观测性平台所带来的成本也在急剧攀升。企业常常陷入两难境地&#xff…

实测阿里图像编辑模型Qwen-Image-Edit:汉字也能无痕修改(附实测案例)

现在越来越多的人都开始用 AI 来生成图片了&#xff0c;比如用 AI 生成节日海报、电商图、游戏角色设计、封面图、文章配图等等。效率是真的快&#xff0c;而且往往生成得还都不赖。但有时一个「瑕疵」&#xff0c;会坏了整张图片。使用图像编辑&#xff0c;可能抽半天都抽不到…

为什么软解码依然重要?深入理解视频播放与开发应用(视频解码)

为什么软解码依然重要&#xff1f;深入理解视频播放与开发应用 摘要&#xff1a; 软解码&#xff08;Software Decoding&#xff09;是视频解码中最灵活的一种方式&#xff0c;完全依赖 CPU 来执行压缩算法的逆过程。本文从原理、优势与劣势、典型应用、跨平台实现到未来趋势&a…

大模型微调 Prompt Tuning与P-Tuning 的区别?

Prompt Tuning 和 P-Tuning 都属于 参数高效微调方法&#xff08;PEFT, Parameter-Efficient Fine-Tuning&#xff09;&#xff0c;主要是为了避免对大模型全部参数进行训练&#xff0c;而是通过小规模参数&#xff08;prompt embedding&#xff09;来适配下游任务。但两者的实…

控制系统仿真之PID校正1-系统固有属性(四)

一、PID校正概述PID校正是比例(Proportional)积分&#xff08;Integral&#xff09;微分&#xff08;Derivative&#xff09;校正的简称&#xff0c;是历史最悠久&#xff0c;生命力最强的控制方式。其主要优点有&#xff1a;①原理简单、使用方便②适应性强&#xff0c;可广泛…

C语言————斐波那契数列(例题1)

小博在学习c语言时&#xff0c;总是会遇到一些很典型的例题&#xff0c;如&#xff1a;斐波那契数列&#xff0c;汉诺塔问题&#xff0c;冒泡排列问题&#xff0c;等等。小博决定汇总一下&#xff0c;今天讲清斐波那契数列&#xff0c;后续持续更新。一、斐波那契数列斐波那契数…

Text to Speech技术详解与实战:GPT-4o Mini TTS API应用指南

Text to Speech技术详解与实战&#xff1a;GPT-4o Mini TTS API应用指南 一、概述 Text to Speech&#xff08;TTS&#xff0c;文本转语音&#xff09;技术正在广泛应用于博客配音、多语言音频输出与实时语音流等场景。越来越多的开发者希望将自然、流畅的AI语音集成到产品中…

数字ic后端Useful Skew到底怎么玩的?

CCOpt的Useful Skew到底怎么玩的&#xff1f;上图里&#xff0c;我们可以看到&#xff0c;在CCOpt之前&#xff0c;这个chain上的slack为200ps/-100ps/200ps。我们想修复这-100ps的slack&#xff0c;就有两个策略了&#xff1a;方法1&#xff1a;把F1的delay提前&#xff1b;方…

Linux 网络配置与系统管理指南

文章目录 1. 虚拟机网络模式 1. 桥接模式 (Bridged) 2. NAT 模式 3. 仅主机模式 (Host-only) 2. 固定IP配置(桥接模式) 配置步骤: 3. 进程管理 1)查看进程:ps命令 2)终止进程 3)进程树查看 4. 服务管理 1)systemctl管理服务 2)chkconfig服务管理 5. 动态监控 top命令 …

算法学习笔记:双指针_滑动窗口专题

目录 1.长度最小的子数组 2.无重复字符的最长子串 3.将x减少到0的最小操作数 4.最大连续1的个数Ⅲ 5.找到字符串中所有字母异位词 6.水果成篮 7.串联所有单词的子串 8.最小覆盖子串 1.长度最小的子数组&#xff1a;209. 长度最小的子数组 - 力扣&#xff08;LeetCode&a…

Witsbb健敏思是哪个国家的品牌?澳洲纯净溯源,100+过敏原排除的敏宝专研品牌

在为敏感体质宝宝挑选营养补充品时&#xff0c;“品牌来源是否可靠”“品控标准是否严格”往往是宝爸宝妈的首要考量。源自澳大利亚的Witsbb健敏思&#xff0c;作为澳企Forestpark旗下的综合膳食营养补充品牌&#xff0c;从诞生起便根植于澳洲严苛的保健品监管体系&#xff0c;…

gdbserver远程调试和交叉编译gdb

1、交叉编译gdb 1.1下载源码 Gdb源码&#xff1a;wget https://ftp.gnu.org/gnu/gdb/gdb-15.2.tar.xz Gdb依赖的源码&#xff1a;GMP、MPFR、ncurses&#xff08;图形库&#xff09; GMP源码&#xff1a;wget https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz MPFR源码&#xff1…

UE5.5模型导入FBX强制x轴向前Force Front XAxis

很多软件轴向都是不同的 , 所以模型导入虚幻的时候 可以勾选Force Front XAxisUE5.5 在右上角设置 点击右上角三个点就可以看到强制前X轴