frameworks 之 Winscope 工具
- 1. 手機端開啟
- 2. 加載追蹤的文件
- 2.1 Android12
- 3. 分析文件
Winscope 是一款 Web 工具,可以讓用戶在動畫和轉換期間和之后記錄、重放和分析多個系統服務的狀態。Winscope 將所有相關的系統服務狀態記錄在一個跟蹤文件中。使用帶有跟蹤文件的 Winscope 界面,您可以通過重放、單步執行和調試轉換來針對每個動畫幀檢查這些服務的狀態
1. 手機端開啟
- 進入設置 -> 系統 -> 開發者選項 -> 快捷設置開發者模塊。
- 勾選 winscope 追蹤
- 下拉狀態欄菜單點擊即啟動,再次點擊即暫停
記錄下的文件夾在 /data/misc/wmtrace 下,文件如下
名稱 | 意義 |
---|---|
ime_trace_clients.winscope | 輸入法相關 |
ime_trace_managerservice.winscope | 輸入法相關 |
ime_trace_service.winscope | 輸入法相關 |
layers_trace.winscope | SurfaceFlinger 圖層相關 |
wm_log.winscope | |
wm_trace.winscope | WindowManager相關 |
運行后 可通過 拉到電腦下
adb pull /data/misc/wmtrace
2. 加載追蹤的文件
2.1 Android12
對應 html 路徑如下
prebuilts/misc/common/winscope 點擊下面的Index.html 用google瀏覽器打開。
3. 分析文件
一般導入 layers_trace.winscope 和 wm_trace.winscope 查看黑屏問題。
字段 | 意義 |
---|---|
Simplify names | 顯示簡短的名稱 |
Only visible | 顯示可見的 |
Flat | 折疊 |
Show Diff | 表示與上一幀的差別 |
下方進度條 | 表示對應的進度,左右代表前進后退 |
Properties | 選中圖層的屬性 |
選擇勾選 diff
- 綠色的 表示 新增
- 紅色的 表示 刪除 ,當帶標簽move的時候表示 當前圖層移動到 另外圖層 如584 移動到 600下面的
查看黑屏可以選擇 flat 跟 Only visible,這樣留意哪個圖層消失并且過一會重新出現
如下圖 ,這時候 586 圖層可見
下一幀 消失 并且持續好多幀不可見
最后 重新添加了 604圖層 可知是中間丟失了導致黑屏