设计初衷:

  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

adb shell 命令计算APP应用的 FPS 和评价流畅度。的更多相关文章

  1. Android系统在超级终端下必会的命令大全(adb shell命令大全)

    . 显示系统中全部Android平台: android list targets . 显示系统中全部AVD(模拟器): android list avd . 创建AVD(模拟器): android c ...

  2. adb shell 命令详解(转)

    adb介绍 SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为(Android Debug Bridge就是调试桥的作用.通过adb我们可以在Eclipse中方面 ...

  3. Android adb shell命令大全

    1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): androi ...

  4. 【原创】Android开发之ADB及ADB SHELl命令的应用

    adb的全称为Android Debug Bridge,就是起到调试桥的作用.通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具.adb的工作方式比 ...

  5. Android成长记(1)-----android环境搭建与adb shell 命令

    整理一下学习android一步一步存下来的自己总结或是从网上摘抄的比较不错的文档,电脑要上交了,最舍不得的就是自己积累的这么点东西了,所以决定发布到黎梓小站,以供大家一起学习以及自己日后忘记了也有地方 ...

  6. android adb shell 命令大全

    1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): androi ...

  7. adb shell 命令详解,android

    http://www.miui.com/article-275-1.html http://noobjava.iteye.com/blog/1914348 adb shell 命令详解,android ...

  8. 【安卓手机通用】android adb shell 命令大全

    浏览:3116 | 更新:2013-10-17 17:05 | 标签:安卓 android 一.[什么是shell] Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命 ...

  9. adb shell 命令详解

    adb介绍 SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为(Android Debug Bridge就是调试桥的作用.通过adb我们可以在Eclipse中方面 ...

随机推荐

  1. CUDA ---- GPU架构(Fermi、Kepler)

    GPU架构 SM(Streaming Multiprocessors)是GPU架构中非常重要的部分,GPU硬件的并行性就是由SM决定的. 以Fermi架构为例,其包含以下主要组成部分: CUDA co ...

  2. 一本通1649【例 2】2^k 进制数

    1649:[例 2]2^k 进制数 时间限制: 1000 ms         内存限制: 524288 KB [题目描述] 原题来自:NOIP 2006 提高组 设 r 是个 2k 进制数,并满足以 ...

  3. BZOJ2749 HAOI2012外星人(数论)

    不妨把求φ抽象成把将每个位置上的一个小球左移一格并分裂的过程,那么即求所有球都被移到1号格子的步数. 显然要达到1必须先到达2.可以发现每次分裂一定会分裂出2号位的球,因为2以外的质数一定是奇数.以及 ...

  4. 开发Spring Shell应用程序

    2 开发Spring Shell应用程序 向shell提供命令非常简单,需要学习的注解很少.该命令的实现风格与使用依赖注入的应用程序的开发类相同,您可以利用Spring容器的所有特性来实现您的命令类. ...

  5. Nginx多进程高并发、低时延、高可靠机制在缓存代理中的应用

    1. 开发背景 现有开源缓存代理中间件有twemproxy.codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能. 由于twemp ...

  6. 【UOJ#67】新年的毒瘤(Tarjan)

    [UOJ#67]新年的毒瘤(Tarjan) 题面 UOJ 题解 一棵\(n\)个节点的树显然有\(n-1\)条边,在本题中意味着删去一个点之后还剩下\(n-2\)条边.那么找到所有度数为\(m-(n- ...

  7. sql server 小技巧(5) Sql server 获取指定字符后的所有字符 - 去掉指定字符前的所有字符

    select top 10  SUBSTRING( sproductcode, CHARINDEX('-', SProductCode)+1, LEN(SProductCode)) from csmr ...

  8. java绘图合并图像AlphaComposite模式测试

    package com.hdwang.test; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.sw ...

  9. Mysql(四)正则表达式

    一.正则表达式 1.使用like可以进行不确定的查询(模糊查询),然而,模糊 查询的功能有限,当需要进行更加复杂的模式匹配时,可以 使用正则表达式来完成. 2.正则表达式可以对指定的字符串与模式之间执 ...

  10. spring@Transactional的一点理解

    spring事务有7种传播行为,分别是: 1.PROPAGATION.REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置. 2.PROPAGAT ...