-
最有用的辦法:抓取winscope
第一步
(該步一勞永逸,只需要執(zhí)行一次,如果不想執(zhí)行,可以直接下載本文中的winscope.html文件并直接跳過該步驟):先下載整機(jī)源碼,執(zhí)行源碼目錄prebuilts/misc/common/winscope的腳本:update_winscope.sh來獲取最新版winscope.html毡熏,執(zhí)行前需要在源碼主目錄下source、lunch侣诵,如:
source build/envsetup.sh
lunch missi-userdebug
prebuilts/misc/common/winscope/update_winscope.sh
update_winscope.sh執(zhí)行成功痢法,SUCCESS結(jié)果包含了winscop.html目錄:
更新后的winscope.html:
鏈接: https://pan.baidu.com/s/1ziwL0jajVG25sA52sQ15ZQ 提取碼: 9ypf
第二步
找到源碼中的winscope_proxy.py文件,如我的目錄在:/development/tools/winscope/adb_proxy/winscope_proxy.py杜顺。
或者可以打開winscope.html财搁,下載winscope_proxy.py
winscope_proxy.py文件下載:
鏈接: https://pan.baidu.com/s/1V0zWhJfOqgszc3VU8iovcQ 提取碼: 54zk
本地執(zhí)行:
python3.x winscope_proxy.py(其中x換為python3的版本,如python3.9)
執(zhí)行winscope_proxy.py后躬络,點(diǎn)擊RETRY即可抓取
第三步
抓取trace尖奔。
方法一:
winscope.html中START TRACE->復(fù)現(xiàn)問題->END TRACE,winscope.html便會自己打開trace及錄屏(前提需要手機(jī)為userdebug版本)效果如下:
方法二:
通過快捷設(shè)置記錄跟蹤情況穷当,請執(zhí)行以下操作:
啟用開發(fā)者選項(xiàng)提茁。
依次轉(zhuǎn)到開發(fā)者選項(xiàng) > 快捷設(shè)置開發(fā)者圖塊。
啟用 WinScope 跟蹤馁菜。
打開快捷設(shè)置茴扁。
點(diǎn)按 Winscope 跟蹤以啟用跟蹤。
在設(shè)備上執(zhí)行窗口轉(zhuǎn)換汪疮。
窗口轉(zhuǎn)換完成后峭火,打開快捷設(shè)置,然后點(diǎn)按 Winscope 跟蹤記錄以停用跟蹤記錄智嚷。
跟蹤記錄會被寫入 /data/misc/wmtrace/wm_trace.winscope
和 /data/misc/wmtrace/layers_trace.winscope
卖丸,同時還會包含在錯誤報告中。
第四步
trace已經(jīng)抓取成功盏道,可以切換到復(fù)現(xiàn)那一幀稍浆,查看 WindowManager和 SurfaceFlinger是否存在異常。還能看到windowmanager對應(yīng)log:
抓winscope常見問題
- 執(zhí)行update_winscope.sh時猜嘱,發(fā)生Fail:could not run yarn.
解決辦法:安裝yarn
sudo apt remove cmdtest
sudo apt remove yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install yarn
安裝后執(zhí)行:which yarn
查看是否成功
- 執(zhí)行update_winscope.sh時衅枫,報錯:
解決辦法:執(zhí)行source和lunch
- 執(zhí)行update_winscope.sh時,報錯:
error cross-env@7.0.3: The engine "node" is incompatible with this module. Expected version ">=10.14". Got "8.10.0"
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
FAIL: installing winscope dependencies failed.
看報錯信息泉坐,node版本太低導(dǎo)致为鳄,可以用 node -v查看一下node版本:
解決辦法:
1. 先安裝npm:
sudo apt update
sudo apt install nodejs npm
2. 用npm安裝Node工具包n,使用該工具包將node升級到最新版本:
sudo npm install n -g
sudo n stable
-
逐幀觀察錄屏法(通常解決閃屏問題的第一步)
推薦一個很好用的逐幀查看視頻的應(yīng)用:avidemux
linux可以直接下載appimage: