GuidePublished: 8 min read

Android Developer Options Every Tester Should Know

The Android Developer options that matter for testing, from USB debugging and Show taps to animation scales and Demo mode, with the adb command for each.

Android Developer options are a hidden settings page that turns a phone into a far better test device: keep the screen awake, show every tap, speed up animations, kill activities to test state restoration, and clean the status bar for screenshots. This guide covers the Developer options every tester should know, what each one is for, the adb command that sets it without touching the phone, and how to put everything back. If you mirror the device in ADBKit, several of them also make recordings and screenshots clearer.

Warning: Most of these settings survive a reboot and some change app behaviour. Turn them off when you finish a test session, or keep them on a dedicated test device only.

Enable Developer options and USB debugging

Open Settings > About phone and tap Build number seven times. On Samsung the item lives under Software information, on Xiaomi under MIUI version. A toast counts down and then confirms "You are now a developer". The new Developer options page appears under System (or at the bottom of the main Settings list on some brands).

The first switch to flip is USB debugging. It is what lets adb, Android Studio and ADBKit talk to the phone at all. The full walkthrough, including the "Allow USB debugging?" prompt and the fingerprint it shows, is in how to enable USB debugging on Android. Once it is on, check the connection:

adb devices

Two neighbouring options are worth knowing:

  • Revoke USB debugging authorizations forgets every computer you have ever tapped "Allow" for. Use it on a shared device that has met too many laptops, or to retest the authorization prompt.
  • Wireless debugging (Android 11+) pairs over Wi-Fi with a pairing code. It is a different mechanism from the classic adb tcpip 5555 route in ADB over Wi-Fi, and only the classic route works with ADBKit's Wi-Fi helper.

Settings that make demos, recordings and screenshots clearer

Stay awake

With Stay awake on, the screen never sleeps while the phone is charging or connected over USB, so you stop fighting the lock screen between steps. The command equivalent lasts until the next reboot:

adb shell svc power stayon true
adb shell svc power stayon false

Show taps and Pointer location

Show taps draws a small circle wherever a finger (or a mirrored mouse click) touches the screen, which makes bug reports and recordings self-explanatory. Pointer location goes further and overlays a bar with the exact X/Y coordinates and a trail of the gesture. It is the fastest way to find coordinates for adb shell input tap, covered in simulating taps and key presses with adb shell input.

adb shell settings put system show_touches 1
adb shell settings put system pointer_location 1

Set either value to 0 to turn it off. Remember to disable Pointer location before you take final screenshots, since the overlay is captured too.

Demo mode: a clean status bar

Store listings and documentation look better with a full battery, a fixed clock and no notification icons. Android's System UI demo mode fakes all of that. Enable it once, then send broadcasts:

adb shell settings put global sysui_demo_allowed 1
adb shell am broadcast -a com.android.systemui.demo -e command enter
adb shell am broadcast -a com.android.systemui.demo -e command clock -e hhmm 1000
adb shell am broadcast -a com.android.systemui.demo -e command battery -e level 100 -e plugged false
adb shell am broadcast -a com.android.systemui.demo -e command notifications -e visible false

A network command controls the Wi-Fi and signal icons the same way. Leave demo mode with -e command exit, or use the switch under Developer options > System UI demo mode on stock Android.

Settings that speed up tests

Animation scales

Three sliders, Window animation scale, Transition animation scale and Animator duration scale, control how long UI animations take. 0.5x makes manual testing snappier; Animation off is practically mandatory for Espresso and UI Automator tests, which otherwise time out waiting for views that are still sliding in.

adb shell settings put global window_animation_scale 0
adb shell settings put global transition_animation_scale 0
adb shell settings put global animator_duration_scale 0

Restore the default by putting 1 in all three; some apps skip animations entirely at scale 0, which hides animation bugs if you forget.

Logger buffer sizes

The default logcat ring buffer is small, and a busy device overwrites the lines you wanted within seconds. Raise Logger buffer sizes to 4 MB or more when you chase an intermittent crash, or set it for the current session:

adb logcat -G 16M

Reading Android logcat explains how to filter the larger output.

Settings that break your app on purpose

These options reproduce problems that only occur on low-end devices or under memory pressure.

  • Don't keep activities destroys every activity as soon as you leave it. Press Home, come back, and the app must rebuild the screen from saved state; a form that loses its contents is a state-restoration bug. The adb form is settings put global always_finish_activities 1.
  • Background process limit caps how many background processes survive, from "Standard limit" down to "No background processes", mimicking the system killing your app while the user is elsewhere.
  • Force RTL layout direction mirrors the whole UI as if the language were Arabic or Hebrew, exposing icons, padding and alignment hard-coded left-to-right. The adb equivalent is settings put global debug.force_rtl 1, effective after the app restarts.
  • Select mock location app lets a chosen app feed fake GPS positions for testing geofencing or map screens from your desk. Per app: adb shell appops set com.example.app android:mock_location allow.

Note: Don't keep activities and the background process limit affect every app on the phone, including the launcher and keyboard. Expect odd behaviour elsewhere, and switch them off right after the test.

Settings that show what the UI is doing

  • Show layout bounds draws clip bounds, margins and padding of every view, making overlapping or oversized views obvious. adb shell setprop debug.layout true enables it; reopen the app to see the change.
  • Debug GPU overdraw colours each pixel by how many times it was drawn in one frame. Blue is fine, dark red means four or more layers. adb shell setprop debug.hwui.overdraw show turns it on, false turns it off.
  • Profile HWUI rendering (On screen as bars) shows a bar per frame; anything above the green 16 ms line is a dropped frame. adb shell setprop debug.hwui.profile visual_bars enables it, false disables it.

All three overlays are captured in screenshots and recordings, so turn them off before you record a demo.

Quick reference: setting, when to use it, how to turn it off

SettingWhen to useHow to turn off
USB debuggingAny adb, Android Studio or ADBKit sessionToggle off; revoke authorizations on shared devices
Stay awakeLong manual sessions, mirroringToggle off or svc power stayon false
Show tapsDemos, bug reports, recordingssettings put system show_touches 0
Pointer locationFinding coordinates for input tapsettings put system pointer_location 0
Animation scalesFaster manual testing, UI test suitesSet all three scales back to 1
Don't keep activitiesState-restoration testssettings put global always_finish_activities 0
Background process limitLow-memory behaviourSet back to Standard limit
Force RTL layoutLocalisation QAsettings put global debug.force_rtl 0
Show layout boundsLayout and padding issuessetprop debug.layout false
Debug GPU overdrawRendering performancesetprop debug.hwui.overdraw false
Profile HWUI renderingJank huntingsetprop debug.hwui.profile false
Logger buffer sizesIntermittent crashesSet back to 256 KB or logcat -G 256K
Demo modeMarketing screenshotsBroadcast -e command exit
Mock location appLocation featuresSelect "None"

Using these settings with ADBKit

ADBKit mirrors the phone in a Chromium browser over WebUSB, with no platform-tools or account, and the settings above make that mirror far more useful.

  1. Enable USB debugging as described, plug the phone in and click Connect device, then tap Allow on the phone.
  2. Turn on Stay awake so the mirrored screen does not lock while you work; the USB session counts as "connected" for this setting.
  3. Turn on Show taps before you click Screen Record, so your mouse clicks appear as touch circles in the WebM file.
  4. Set the animation scales to 0.5x if the stream feels laggy at 720p; shorter animations mean fewer frames to encode.
  5. Open the Shell drawer in the toolbar to run the settings put or am broadcast commands from this page without leaving the tab, then click Screenshot for a clean capture with demo mode on.

Only one program can hold the USB connection, so close Android Studio or scrcpy if ADBKit cannot connect. More tips are in Android screen mirroring tips, and the full command list is in the ADB commands cheat sheet.