Android Adb

httprunner/skills/android-adb

by httprunnera2f2c13619bd43cf8fca5319273725c156507840No licenseListed Oct 9, 2026Updated Oct 9, 2026

Android device control via raw ADB commands. Use for device/emulator discovery, USB or Wi-Fi connection, app launch/force-stop, tap/swipe/keyevent/text input, screenshots, UI hierarchy dump, and ADB troubleshooting.

Instructions onlySoftware Development
AI-generated overview

Reference for controlling Android devices and emulators with raw ADB commands.

What it does
This skill is a command reference for driving Android devices and emulators through raw adb commands. It covers device and server management, USB and Wi-Fi connection, app launch and force-stop, tap, swipe, keyevent and text input, screenshots, UI hierarchy dumps, APK install and uninstall, and common keycodes. It also lists execution constraints such as targeting a serial when multiple devices are connected and confirming screen resolution before coordinate actions. It produces executed device actions and captured artifacts such as screenshots and UI XML dumps.
When to use it
Use it when an Android device or emulator must be discovered, connected over USB or Wi-Fi, or operated through taps, swipes, key events and text entry. It also fits capturing screenshots or UI hierarchy dumps and troubleshooting ADB connection or authorization problems.
Requirements
Requires the adb command-line tool with a connected Android device or emulator, and USB or network access to the device. Wi-Fi connection needs USB first to enable tcpip; CJK and special-character input needs the ADB Keyboard app installed and selected as the input method. No scripts are shipped; it is instructions only.

Android ADB

Reference for controlling Android devices with raw adb commands.

Execution Constraints

  • Use adb -s <serial> whenever more than one device is connected.
  • Confirm screen resolution before coordinate actions: adb -s SERIAL shell wm size.
  • Ask for missing required inputs before executing (serial, package/activity, coordinates, APK path).
  • Surface actionable stderr on failure (authorization, cable/network, tcpip state).
  • Prefer ADB Keyboard broadcast for CJK and special character input when ADB Keyboard is installed.

Device And Server

bash
# Start ADB serveradb start-server
# Stop ADB serveradb kill-server
# List devicesadb devices -l
# Target a specific device (use when multiple devices are online)adb -s SERIAL <command>

Wi-Fi Connection

bash
# Enable tcpip (USB required first)adb -s SERIAL tcpip 5555
# Get device IPadb -s SERIAL shell ip route | grep src# oradb -s SERIAL shell ip addr show wlan0
# Connect over networkadb connect <ip>:5555
# Disconnectadb disconnect <ip>:5555

Device State

bash
# Screen sizeadb -s SERIAL shell wm size
# Current foreground app (package/activity from mCurrentFocus)adb -s SERIAL shell dumpsys window | grep -E 'mCurrentFocus|mFocusedApp'
# Get home launcher package (for back-home detection)adb -s SERIAL shell cmd package resolve-activity --brief -c android.intent.category.HOME
# Raw shell commandadb -s SERIAL shell <command>

App Lifecycle

bash
# Verify package installedadb -s SERIAL shell pm list packages | grep <package>
# Launch by package (via monkey)adb -s SERIAL shell monkey -p <package> -c android.intent.category.LAUNCHER 1
# Launch by activityadb -s SERIAL shell am start -W -n <package>/<activity>
# Launch by URI/schemeadb -s SERIAL shell am start -W -a android.intent.action.VIEW -d "<scheme://path>"
# Force-stopadb -s SERIAL shell am force-stop <package>

Input Actions

bash
# Tapadb -s SERIAL shell input tap X Y
# Double tap (two taps with short delay)adb -s SERIAL shell input tap X Y && sleep 0.1 && adb -s SERIAL shell input tap X Y
# Long press (swipe to same point with duration)adb -s SERIAL shell input swipe X Y X Y 3000
# Swipeadb -s SERIAL shell input swipe X1 Y1 X2 Y2 [duration_ms]
# Key eventadb -s SERIAL shell input keyevent KEYCODE_BACKadb -s SERIAL shell input keyevent KEYCODE_HOMEadb -s SERIAL shell input keyevent KEYCODE_ENTER
# Return to home (press BACK repeatedly, check foreground against home launcher)for i in $(seq 1 20); do  adb -s SERIAL shell input keyevent KEYCODE_BACK  sleep 0.5  # Check if home reached by comparing current focus to home package  CURRENT=$(adb -s SERIAL shell dumpsys window | grep mCurrentFocus)  echo "Round $i: $CURRENT"done

Text Input

bash
# Plain text input (ASCII only, spaces escaped as %s)adb -s SERIAL shell input text "hello%sworld"
# Input via ADB Keyboard (supports CJK and special characters)# First ensure ADB Keyboard is active:adb -s SERIAL shell ime set com.android.adbkeyboard/.AdbIME# Then send text (base64 encoded):adb -s SERIAL shell am broadcast -a ADB_INPUT_B64 --es msg "$(echo -n 'your text' | base64)"
# Clear text via ADB Keyboardadb -s SERIAL shell am broadcast -a ADB_CLEAR_TEXT

Screenshot And UI Tree

bash
# Screenshot to local fileadb -s SERIAL exec-out screencap -p > screenshot.png
# Screenshot to device then pulladb -s SERIAL shell screencap -p /sdcard/screen.pngadb -s SERIAL pull /sdcard/screen.png ./screen.png
# Dump UI hierarchy XMLadb -s SERIAL shell uiautomator dump /sdcard/window_dump.xmladb -s SERIAL pull /sdcard/window_dump.xml ./window_dump.xml

App Install And Uninstall

bash
# Install APK (replace existing)adb -s SERIAL install -r /path/to/app.apk
# Uninstalladb -s SERIAL uninstall <package>

Common Keycodes

KeycodeDescription
KEYCODE_BACKBack button
KEYCODE_HOMEHome button
KEYCODE_ENTEREnter/confirm
KEYCODE_DELDelete/backspace
KEYCODE_VOLUME_UPVolume up
KEYCODE_VOLUME_DOWNVolume down
KEYCODE_POWERPower button
KEYCODE_TABTab key
KEYCODE_ESCAPEEscape key

Source and attribution

Source:httprunner/skillsinandroid-adbat commita2f2c13

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal