安卓閃黑工具: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
英文地址,請注明出處:http://en.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軸