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
1.作者:Syw 2.出处:http://www.cnblogs.com/syw20170419/ 3.本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 4.如果文中有什么错误,欢迎指出。以免更多的人被误导。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?