$ adb devices

adb and Android automation, written down properly.

Most adb advice online is a command pasted without the Android version it needs, or the error you get when it fails. This handbook gives you the command, the version it works on, and what to check when adb devices says unauthorized. For Android developers, QA automation engineers and anyone running more than a couple of phones.

start here

ADB over Wi-Fi

Pairing codes on Android 11 and up, the old adb tcpip 5555 route, and why the connect port isn't the pairing port.

scrcpy, properly configured

Install, the flags worth memorising, headless recording, several phones at once, and mirroring over the network.

uiautomator2 vs Appium

Both drive the same UiAutomator framework underneath. Setup cost, speed, languages and which one fits your team.

Emulator vs real device

What the emulator can't reproduce: OEM builds, carrier networks, integrity verdicts and real performance.

Browse all articles →

adb fundamentals

Install, pairing, wireless debugging, shell, logcat, dumpsys, pm and am, input. The commands you run every day, and the flags you look up every time.

mirroring and control

scrcpy, screen recording and driving a phone from your desk, over USB or the network.

automation frameworks

uiautomator2, Appium, Espresso and black-box scripting. Where each one fits, and why tests that pass locally go flaky in CI.

real devices at scale

Emulators against real phones, root against non-root, device farms, and what changes when twenty phones share one host.

who writes this

ADB Handbook is written by the team that runs cloudf.one's rack of real Android phones in Singapore. Keeping physical phones authorized, reachable and online is our day job, so we write about adb from the operator's side of the cable.

That is also the ownership disclosure. cloudf.one is our product, and every link to it on this site is marked sponsored. Commands are checked against the official Android, scrcpy, Appium and uiautomator2 docs, and anything that depends on an Android version says which one. The disclosure page has the details.