設計初衷:android
一、面臨用戶和公司內領導試用中反饋的卡頓問題,思考如何能有效量化評估?
二、如何在嘗試復現卡頓的過程當中持續監控FPS和丟幀狀況?shell
操做說明以下:測試
(1)腳本源碼的下載:(https://pan.baidu.com/s/1qYjzIZ6)ui
(2)具體實現以下:spa
一、將下載的源碼進行解壓,就可看到在以下操做命令中用到的文件,根據以下的說明進行操做。設計
二、Push文件:blog
adb push busybox /data/local/tmp
adb shell chmod 755 /data/local/tmp/busybox
adb push /Users/lucky/Desktop/FPS_Test/fps.sh /data/local/tmpget
使用方式實例:源碼
一、查看當前顯示的窗口名使用:
adb shell dumpsys SurfaceFlinger | grep "|....|"
獲取到的參數說明:
name = 窗口名稱
StatusBar=狀態欄窗口名
HWC_FRAMEBUFFER_TARGET=硬件合成層名(it
二、按照60幀標準監控桌面,實時顯示數據在窗口上(運行此命令後,直接在手機上進行操做便可看到窗口數據的更新,測試結果具體的示例以下)
adb shell sh /data/local/tmp/fps.sh -t 25 -w com.iBer.iBerAppV2/com.iBer.iBerAppV2.MainActivity
三、爲了確認方法的可行性,以下是採用的其餘APP進行的對比測試:
#短信
adb shell sh /data/local/tmp/fps.sh -t 25 -w com.android.mms/com.qiku.android.mms.ui.MmsConversationListActivity
#今日頭條
adb shell sh /data/local/tmp/fps.sh -t 25 -w com.ss.android.article.lite/com.ss.android.article.lite.activity.MainActivity
測試結果的示例截圖與說明:
說明:以下截圖中的紅色標出部分,是測試APP的某個功能時的數據記錄
參數說明:
Show: FU(s) LU(s) Date FPS Frames jank MFS(ms) OKT SS(%)
FU(s): 第一幀正常運行時間
LU(s): 最後一幀的正常運行時間
Date: 日期和時間
FPS: 每秒幀數
Frames: 循環的全部幀
jank: 當幀超過刷新週期時,將添加一個jank
MFS(ms):最大幀間距
OKT: 超過 KPI的時間. KPI 是一幀的使用時間
SS(%): 平滑度分數.計算公式 SS=(FPS/target FPS)*60+(KPI/MFS)*20+(1-OKPIT/Frames)*20
IF FPS > target FPS: FPS/The target FPS=1
IF KPI > MFS: KPI/MFS=1
WN: 同名窗口的窗口好. 如. SurfaceView
原連接:https://testerhome.com/topics/4775