Emulator Setup
Emulator Setup
Android Emulator
32-bit
1// Minimal
2AndroidEmulator emulator = AndroidEmulatorBuilder.for32Bit().build();
3
4// With options
5AndroidEmulator emulator = AndroidEmulatorBuilder.for32Bit()
6 .setProcessName("com.example.app")
7 .setRootDir(new File("target/rootfs"))
8 .addBackendFactory(new DynarmicFactory(true))
9 .build();
64-bit
1AndroidEmulator emulator = AndroidEmulatorBuilder.for64Bit()
2 .setProcessName("com.example.app")
3 .setRootDir(new File("target/rootfs"))
4 .addBackendFactory(new HypervisorFactory(true)) // preferred on macOS
5 .addBackendFactory(new Unicorn2Factory(true)) // fallback
6 .build();
Key classes
| Class | Path |
|---|---|
AndroidEmulatorBuilder | unidbg-android/.../linux/android/AndroidEmulatorBuilder.java |
AndroidARMEmulator | unidbg-android/.../linux/android/AndroidARMEmulator.java |
AndroidARM64Emulator | unidbg-android/.../linux/android/AndroidARM64Emulator.java |
iOS Emulator
1// ARM32
2DarwinEmulator emulator = DarwinEmulatorBuilder.for32Bit().build();
3
4// ARM64
5DarwinEmulator emulator = DarwinEmulatorBuilder.for64Bit().build();
Key class: unidbg-ios/.../ios/DarwinEmulatorBuilder.java
Backend Selection
Backends are tried in order; first available wins.
| Backend | Factory Class | Notes |
|---|---|---|
| Dynarmic | DynarmicFactory | Fastest, JIT-compiled |
| Hypervisor | HypervisorFactory | macOS/Linux, requires hardware |
| Unicorn2 | Unicorn2Factory | Cross-platform, most compatible |
| KVM | KvmFactory | Linux only |
Lifecycle
1// Always close when done
2emulator.close();
3
4// Or use try-with-resources (if implements Closeable)
5try (AndroidEmulator emulator = AndroidEmulatorBuilder.for64Bit().build()) {
6 // ...
7}
Memory Access
1Memory memory = emulator.getMemory();
2Backend backend = emulator.getBackend();