Android Emulator Cloud Runner is a containerized Android emulator with native ARM translation support, Google GAPPS, Magisk root, and a built-in web interface. Designed for cloud-native CI/CD pipelines, it enables scalable Android testing and development in any Docker or Kubernetes environment.
Access and control the Android emulator directly in your browser with the integrated scrcpy-web interface. No extra software required — just open your browser and start interacting with the virtual device.
Benefits:
- Zero client-side installation
- Access from any device with a web browser
- Full touch + keyboard support
- Perfect for remote teams and cloud infrastructure
- 🌐 Web Interface: Browser-based emulator control via scrcpy-web
- 🔄 ARM Translation: Run ARM/ARM64 native apps on x86_64 using ndk_translation
- Root + Magisk: Preinstalled root access with Magisk manager
- PICO GAPPS: Essential Google services included
- Seamless ADB: Connect via ADB from host or network
- scrcpy Mirror: Native desktop mirroring support
- Multi-Architecture: Runs on both x86_64 and arm64 hosts
- Docker/K8s Ready: Built for cloud infrastructure and CI/CD pipelines
- Supervisor Managed: Reliable process management inside container
- Docker installed on your system (Installation Guide)
- Docker Compose for orchestration (Installation Guide)
- KVM Support for hardware acceleration:
egrep -c '(vmx|svm)' /proc/cpuinfo
git clone https://github.com/luoshixin93-sudo/android-emulator-cloud-run.git
cd android-emulator-cloud-run
docker compose up -dAccess the web interface at http://localhost:8000
First boot takes 10-15 minutes. Monitor progress with
docker logs -f android-emulator-cloud-run
- Open browser →
http://localhost:8000 - Device appears as "android-emulator-cloud-run:5555"
- Choose streaming option: H264 (recommended), Tiny H264, or Broadway.js
adb connect localhost:5555
adb devices
# localhost:5555 devicescrcpy -s localhost:5555Ensure
scrcpyis installed on your host (Installation Guide)
| Variable | Description | Default |
|---|---|---|
DNS |
Private DNS server | one.one.one.one |
RAM_SIZE |
RAM in MB | 4096 |
SCREEN_RESOLUTION |
Screen WIDTHxHEIGHT |
device default |
SCREEN_DENSITY |
Screen DPI | device default |
ROOT_SETUP |
Enable Magisk root (1=on) |
0 |
GAPPS_SETUP |
Install PICO GAPPS (1=on) |
0 |
ARM_TRANSLATION |
Enable ARM-on-x86 (1=on) |
1 |
The first boot performs:
- AVD creation (Android 30 / Android 11)
- GAPPS installation (if
GAPPS_SETUP=1) - Magisk rooting (if
ROOT_SETUP=1) - ARM translation layer (if
ARM_TRANSLATION=1) - Extras copied to
/sdcard/Download
First boot complete when logs show:
Broadcast completed: result=0
Success !!
2025-04-22 13:45:18,724 INFO exited: first-boot (exit status 0; expected)
docker logs -f android-emulator-cloud-run- ADB Connection Refused: Ensure port
5555is open; checkdocker logs - First Boot Slow: Normal; downloads and configures system on first run
- ARM Apps Won't Install: Set
ARM_TRANSLATION=1and restart container - KVM Not Accessible: Check
/dev/kvmpermissions and host CPU virtualization
Made with ❤️ for cloud phone automation → qtphone.com
