adb shell 命令計算APP應用的 FPS 和評價流暢度。


設計初衷:

  1、面臨用戶和公司內領導試用中反饋的卡頓問題,思考如何能有效量化評估?
  2、如何在嘗試復現卡頓的過程中持續監控FPS和丟幀情況?

操作說明如下:

(1)腳本源碼的下載:(https://pan.baidu.com/s/1qYjzIZ6)

(2)具體實現如下:

       1、將下載的源碼進行解壓,就可看到在如下操作命令中用到的文件,根據如下的說明進行操作。

       2、Push文件:

    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/tmp


使用方式實例

  1、查看當前顯示的窗口名使用:
  adb shell dumpsys SurfaceFlinger | grep "|....|"
  獲取到的參數說明:
    name = 窗口名稱
    StatusBar=狀態欄窗口名
    HWC_FRAMEBUFFER_TARGET=硬件合成層名(

  2、按照60幀標准監控桌面,實時顯示數據在窗口上(運行此命令后,直接在手機上進行操作即可看到窗口數據的更新,測試結果具體的示例如下)
  adb shell sh /data/local/tmp/fps.sh -t 25 -w com.iBer.iBerAppV2/com.iBer.iBerAppV2.MainActivity

  3、為了確認方法的可行性,如下是采用的其他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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM