本文给大家推荐一个网络上找到的shell脚本工具,利用dumpsys SurfaceFlinger --latency的数据计算FPS,目前我测试在Android 14上依然可以使用,可以满足某些场景下的测试需求,或者基于此做二次开发。
一、原文地址
https://testerhome.com/topics/4775
还有一个较新的版本,不过我并未测试,大家可以自行查阅
https://testerhome.com/topics/20187
自行复制到浏览器中查看吧!
二、使用方法
1. 设备端需存在/data/local/tmp/busybox (busybox可到官网对应cpu架构下载) ,https://busybox.net/downloads/binaries/
命令:
adb push busybox /data/local/tmp
adb shell chmod 755 /data/local/tmp/busybox
2. 把shell脚本放到/data/local/tmp/fps_monitor.sh
3. dumpsys SurfaceFlinger找到要监测的layer name
4. 旧版本可以类似执行:
adb shell
sh /data/local/tmp/fps_monitor.sh -w "MultiDisplayDemo#104" -t 30
三、结果展示
播放一个30FPS的视频时,监测对应Surface Layer的帧率
播放一个25FPS的视频时,监测对应Surface Layer的帧率
Settings APP UI 界面的刷新FPS
四、小结
这个开源工具还可以生成可视化的报告,暂未试用,其实console log打印出的实时监测信息就可以满足需求。基于此做二次开发来满足自己的测试场景是个不错选择。
当然,主要目的还是了解使用dumpsys SurfaceFlinger --latency获得的数据来计算FPS的方法。多一种思路,少一点烦恼!
阅读原文
Android Graphics 显示系统 - 通过dumpsys SurfaceFlinger --latency计算FPS