DevTools
Debug builds include an on-device performance overlay.
Toggle the overlay
Section titled “Toggle the overlay”Start the development application:
pam mobile devFrom another terminal:
pam mobile devtoolsRun the DevTools command again to hide it.
The receiver and overlay are excluded from release builds.
Metrics
Section titled “Metrics”The overlay reports:
- smoothed frame rate;
- decode time;
- mount and commit time;
- rendered node count;
- mutation batch count;
- patch versus full commits; and
- native heap use.
Use it to identify an expensive interactive path, not as the final benchmark artifact.
Raw Android command
Section titled “Raw Android command”Integrations can send the broadcast directly:
adb shell am broadcast \ -a dev.pam.nativeapp.action.TOGGLE_DEVTOOLS \ -p your.application.id.debugWhen Firebase is enabled with a production-only google-services.json, Gradle
keeps the base application ID for debug builds. In that case, omit .debug.
The pam mobile devtools command detects the correct package automatically.
Profiling workflow
Section titled “Profiling workflow”pam mobile devtoolspam mobile profilepam mobile benchmarkDevTools shows live symptoms. The profile and benchmark commands produce repeatable evidence suitable for comparison and CI.
On Android, pam mobile benchmark installs a separate, minified benchmark
target together with its instrumentation APK. It does not measure the
hot-reload .debug process that may already be open. A missing target fails
the run instead of producing a misleading startup result.
Watch the native buffer count after an update. It must return to zero after the frame finishes; a retained non-zero count indicates an ownership or release bug.
When the development app redraws but buttons stop responding, or the reload port is already occupied, follow the hot reload guide. It includes the single-listener contract and an interaction test after remount.