How uxazu/aemulator works
AEmulator imports Android firmware and runs it as a guest system on an Android phone. The principal flow is selecting firmware, parsing it into a boot plan, then starting and interacting with the guest. Runtime paths differ by guest version: older systems use patched QEMU, while newer arm64 programs run natively with an engine kernel. The README documents the major compatibility features; source excerpts chiefly expose property, input, binder, and graphics helpers, so detailed wiring among unsampled components is not asserted.
Main entry points: GuestRunner.kt Guest execution · Importer.kt Firmware importer · VmActivity.kt Guest controls · host.c GL bridge
Components 24
App experience
- Firmware library
app/src/main/java/app/aemu/ui/Home.kt - Guest controls
app/src/main/java/app/aemu/ui/VmActivity.kt
Firmware import
- Firmware importer
app/src/main/java/app/aemu/importer/Importer.kt - Format readers
app/src/main/java/app/aemu/importer/Formats.kt - Boot planning
app/src/main/java/app/aemu/core/InitPlan.kt
Guest runtime
- Runtime engine
app/src/main/java/app/aemu/core/Engine.kt - Guest execution
app/src/main/java/app/aemu/core/GuestRunner.kt - Binder emulation
native/guest64/36/bclient.c - Guest properties
app/src/main/java/app/aemu/core/PropService.kt - Property area
app/src/main/java/app/aemu/core/PropArea.kt - Unix sockets
app/src/main/java/app/aemu/core/UnixServer.kt
Hardware compatibility
- GL bridge
native/glbridge/host.c - GL adapter
native/glsplit/split.c - Audio HAL
native/audiohal/audio_hal.c - Touch input
app/src/main/java/app/aemu/core/InputService.kt - TLS networking
app/src/main/java/app/aemu/core/TlsBridge.kt - Shared card folder
app/src/main/java/app/aemu/core/Sdcard.kt
App services
- App settings
app/src/main/java/app/aemu/ui/AppSettingsActivity.kt - Translations
app/l10n/langs - App updates
app/src/main/java/app/aemu/update/AppUpdateManager.kt
Other components
- Phone user
- Firmware file
- Phone GPU
- Android audio stack
Connections 24
- Phone user → Firmware library: opens
README.md - Phone user → Firmware file: selects
README.md - Firmware library → Firmware importer: adds firmware
README.md - Firmware file → Firmware importer: reads
README.md - Firmware importer → Format readers: supports formats
- Firmware importer → Boot planning: builds plan
README.md - Phone user → Guest controls: starts guest
README.md - Guest controls → Runtime engine: starts runtime
- Runtime engine → Guest execution: runs guest
README.md - Guest execution → Binder emulation: emulates binder
README.md - Guest execution → GL bridge: forwards graphics
README.md - GL adapter → GL bridge: adapts GL calls
native/glsplit/split.c - GL bridge → Phone GPU: uses
README.md - Guest execution → Audio HAL: uses audio HAL
README.md - Audio HAL → Android audio stack: adapts output
README.md - Guest controls → Touch input: sends touch
- Guest execution → TLS networking: uses proxy
README.md - Guest execution → Shared card folder: shares files
README.md - Guest properties → Property area: reads and writes
app/src/main/java/app/aemu/core/PropService.kt - Guest properties → Unix sockets: serves socket
app/src/main/java/app/aemu/core/PropService.kt - Touch input → Unix sockets: serves socket
app/src/main/java/app/aemu/core/InputService.kt - Phone user → App settings: configures
README.md - App settings → Translations: chooses language
README.md - Phone user → App updates: checks updates