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