Android 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
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
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
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.