git clone https://github.com/ComeOnOliver/skillshub
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/new-silvermoon/awesome-android-agent-skills/android-emulator-skill" ~/.claude/skills/comeonoliver-skillshub-android-emulator-skill && rm -rf "$T"
skills/new-silvermoon/awesome-android-agent-skills/android-emulator-skill/SKILL.mdAndroid Emulator Skill
Build, test, and automate Android applications using accessibility-driven navigation and structured data instead of pixel coordinates.
Quick Start
# 1. Check environment bash scripts/emu_health_check.sh # 2. Launch app python scripts/app_launcher.py --launch com.example.app # 3. Map screen to see elements python scripts/screen_mapper.py # 4. Tap button python scripts/navigator.py --find-text "Login" --tap # 5. Enter text python scripts/navigator.py --find-type EditText --enter-text "user@example.com"
All scripts support
--help for detailed options and --json for machine-readable output.
Production Scripts
Build & Development
-
build_and_test.py - Build Android projects, run tests, parse results
- Wrapper around Gradle
- Support for assemble, install, and connectedCheck
- Parse build errors and test results
- Options:
,--task
,--clean--json
-
log_monitor.py - Real-time log monitoring with intelligent filtering
- Wrapper around
adb logcat - Filter by tag, priority, or PID
- Deduplicate repeated messages
- Options:
,--package
,--tag
,--priority
,--duration--json
- Wrapper around
Navigation & Interaction
-
screen_mapper.py - Analyze current screen and list interactive elements
- Dump UI hierarchy using
uiautomator - Parse XML to identify buttons, text fields, etc.
- Options:
,--verbose--json
- Dump UI hierarchy using
-
navigator.py - Find and interact with elements semantically
- Find by text (fuzzy matching), resource-id, or class name
- Interactive tapping and text entry
- Options:
,--find-text
,--find-id
,--tap
,--enter-text--json
-
gesture.py - Perform swipes, scrolls, and other gestures
- Swipe up/down/left/right
- Scroll lists
- Options:
,--swipe
,--scroll
,--duration--json
-
keyboard.py - Key events and hardware buttons
- Input key events (Home, Back, Enter, Tab)
- Type text via ADB
- Options:
,--key
,--text--json
-
app_launcher.py - App lifecycle management
- Launch apps (
)adb shell am start - Terminate apps (
)adb shell am force-stop - Install/Uninstall APKs
- List installed packages
- Options:
,--launch
,--terminate
,--install
,--uninstall
,--list--json
- Launch apps (
Emulator Lifecycle Management
-
emulator_manage.py - Manage Android Virtual Devices (AVDs)
- List available AVDs
- Boot emulators
- Shutdown emulators
- Options:
,--list
,--boot
,--shutdown--json
-
emu_health_check.sh - Verify environment is properly configured
- Check ADB, Emulator, Java, Gradle, ANDROID_HOME
- List connected devices
Common Patterns
Auto-Device Detection: Scripts target the single connected device/emulator if only one is present, or require
-s <serial> if multiple are connected.
Output Formats: Default is concise human-readable output. Use
--json for machine-readable output.
Requirements
- Android SDK Platform-Tools (adb, fastboot)
- Android Emulator
- Java / OpenJDK
- Python 3
Key Design Principles
Semantic Navigation: Find elements by text, resource-id, or content-description.
Token Efficiency: Concise default output with optional verbose and JSON modes.
Zero Configuration: Works with standard Android SDK installation.