adb shell 命令计算APP应用的 FPS 和评价流畅度。

设计初衷: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

相关文章
相关标签/搜索