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
adb shell 命令计算APP应用的 FPS 和评价流畅度。的更多相关文章
- Android系统在超级终端下必会的命令大全(adb shell命令大全)
. 显示系统中全部Android平台: android list targets . 显示系统中全部AVD(模拟器): android list avd . 创建AVD(模拟器): android c ...
- adb shell 命令详解(转)
adb介绍 SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为(Android Debug Bridge就是调试桥的作用.通过adb我们可以在Eclipse中方面 ...
- Android adb shell命令大全
1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): androi ...
- 【原创】Android开发之ADB及ADB SHELl命令的应用
adb的全称为Android Debug Bridge,就是起到调试桥的作用.通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具.adb的工作方式比 ...
- Android成长记(1)-----android环境搭建与adb shell 命令
整理一下学习android一步一步存下来的自己总结或是从网上摘抄的比较不错的文档,电脑要上交了,最舍不得的就是自己积累的这么点东西了,所以决定发布到黎梓小站,以供大家一起学习以及自己日后忘记了也有地方 ...
- android adb shell 命令大全
1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): androi ...
- adb shell 命令详解,android
http://www.miui.com/article-275-1.html http://noobjava.iteye.com/blog/1914348 adb shell 命令详解,android ...
- 【安卓手机通用】android adb shell 命令大全
浏览:3116 | 更新:2013-10-17 17:05 | 标签:安卓 android 一.[什么是shell] Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命 ...
- adb shell 命令详解
adb介绍 SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为(Android Debug Bridge就是调试桥的作用.通过adb我们可以在Eclipse中方面 ...
随机推荐
- maven使用阿里镜像配置文件
方法一: apache-maven-3.5.2\confsetting.xml,添加如下镜像配置: <mirrors> <mirror> <id>alimaven& ...
- AOP 环绕通知 集成了前置 后置 返回通知等功能
AOP 环绕通知 集成了前置 后置 返回通知等功能
- jdk动态代理 要把目标对象 和自己都传进去;以便自己对目标对象的代理
- python 实现二叉树的深度 & 广度优先遍历
什么是树 在计算器科学中,树(英语:tree)是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合.它是由n(n>0)个有限节点组成一个具有层次关系 ...
- Java字节流与字符流
九.字节流与字符流 9.1 IO的分类 <段落>根据数据的流向分为:输入流和输出流. 输入流 :把数据从其他设备上读取到内存中的流. 输出流 :把数据从内存 中写出到其他设备上的流. 数据 ...
- JXOI2017颜色 解题报告
JXOI2017颜色 首先记录每个位置上颜色在序列中上次出现的位置 开两颗线段树,第一棵维护区间最大值,实际上是维护当前必须被删去的颜色的位置的最大值,第二棵则是维护区间和 首先倒着扫一遍,对于当前颜 ...
- Python Django性能测试与优化指南
摘要:本文通过一个简单的实例一步一步引导读者对其进行全方位的性能优化.以下是译文. 唐纳德·克努特(Donald Knuth)曾经说过:“不成熟的优化方案是万恶之源.”然而,任何一个承受高负载的成熟项 ...
- DCT变换、DCT反变换、分块DCT变换
一.引言 DCT变换的全称是离散余弦变换(Discrete Cosine Transform),主要用于将数据或图像的压缩,能够将空域的信号转换到频域上,具有良好的去相关性的性能.DCT变换本身是无损 ...
- C/C++ 类成员函数指针 类成员数据指针
普通函数指针: "return_type (*ptr_name)(para_types) " 类成员函数指针: "return_type (class_name::*p ...
- bzoj千题计划285:bzoj2555: SubString
http://www.lydsy.com/JudgeOnline/problem.php?id=2555 后缀自动机,用LCT维护parent树 一个串的出现次数 = parent 树 上 其所在状态 ...