¿Cómo mide GameBench el rendimiento (FPS)?

Recientemente, investigué cómo obtener el FPS de las aplicaciones de Android.

Finalmente, todos los métodos utilizan “dumpsys SurfaceFlinger –latency ” para obtener el valor de FPS.

Pero como una aplicación de tercera parte como GameBench, en realidad no tiene permiso para acceder al método de volcado de Surfaceflinger

if ((uid! = AID_SHELL) &&
! PermissionCache :: checkPermission (sDump, pid, uid)) {
result.appendFormat (“Denegación de permiso:”
“no se puede volcar SurfaceFlinger desde pid =% d, uid =% d \ n”, pid, uid);
} más {..}

¡¿Cómo GameBench obtuvo el FPS? !!

1. ejecutar cliente de escritorio

En este paso, el cliente de escritorio empujará gen.sh y gbhelperdaemon a / data / local / tmp /. luego ejecuta el gbhelperdaemon.

el gbhelperdaemon es pertenecer shell, por lo que puede ejecutar “dumpsys SurfaceFlinger –latency ” para obtener fps

2. ejecuta la aplicación GameBench

En este paso, la aplicación conectará el socket creado en gbhelperdaemon y obtuvo el valor fps de gbhelperdaemon

GameBench FPS 获取 猜想