如何通过ADB命令获取安卓游戏的FPS及GPU运行数据?
安卓设备通过ADB获取FPS及GPU数据的可行方案
之前你用到的dumpsys gfxinfo和SurfaceFlinger --latency命令返回空,是因为部分游戏采用了Vulkan/自定义私有渲染管线,绕过了系统默认的HWUI帧统计接口,常规调用无法捕获到渲染数据。以下是经过验证的有效方案:
可行命令列表
FPS获取方案
- 安卓10及以上更新版gfxinfo命令
先开启系统全局渲染统计开关:
再执行带过滤的帧统计命令,可兼容90%以上的常规应用和游戏:adb shell setprop debug.hwui.profile trueadb shell dumpsys gfxinfo <替换为目标包名> framestats recent - SurfaceFlinger顶层窗口统计
先获取当前顶层窗口的层名称:
清空历史 latency 数据后再统计:adb shell dumpsys window displays | grep "top-app"
该命令直接从显示合成层读取帧数据,不受游戏渲染逻辑影响,适配性更高。adb shell dumpsys SurfaceFlinger --latency-clear <替换为窗口层名> # 等待3-5秒后执行 adb shell dumpsys SurfaceFlinger --latency <替换为窗口层名> - 全场景适配的atrace命令
直接抓取系统图形渲染trace,支持Vulkan、OpenGL等所有渲染方式,抓取5秒帧数据:
统计输出的行数量除以抓取时长即可得到平均FPS,准确率最高。adb shell atrace -c -b 16384 gfx view -t 5 | grep "postFramebuffer"
GPU数据获取方案
- 通用GPU统计命令(安卓8及以上)
先查看当前设备支持的GPU统计项:
输出指定应用的GPU使用率、显存占用、渲染耗时等数据:adb shell dumpsys gpu --listadb shell dumpsys gpu <替换为目标包名> - 高通平台底层节点读取(无需应用适配)
高通骁龙处理器的设备可直接读取内核节点获取实时GPU占用率:adb shell cat /sys/class/kgsl/kgsl-3d0/gpu_busy_percentage
注意事项
- 所有操作需提前开启设备的USB调试功能,部分国产系统需要额外开启「USB调试(安全设置)」允许读取系统渲染数据
- 安卓13及以上版本需先给Shell进程授予包可见权限,否则无法识别第三方游戏包名:
adb shell pm grant com.android.shell android.permission.QUERY_ALL_PACKAGES - 若设备已ROOT,可直接读取/proc/<目标应用PID>/下的渲染相关节点,数据准确度最高。
内容的提问来源于stack exchange,提问作者teja
相关产品推荐
相关产品推荐

