Drion · Comparison

Drion vs the Android Emulator

Both run unmodified Android apps on a Linux PC, but they are built for different jobs. The Android Emulator, part of Android Studio, boots a complete Android device in a virtual machine so developers can test their apps on it. Drion has no virtual device: each app runs as its own sandboxed Linux process, next to your other programs.

Android Emulator

A complete Android device in a virtual machine. Your apps run inside it.

Drion

No virtual device. Each app is its own sandboxed Linux process.

BothUnmodified APKs · Android’s own framework code · standard adb
What runs

What runs underneath the app

The emulator runs a virtual phone or tablet: its own kernel, Android’s system services, launcher and system apps, on virtual hardware. Drion keeps the parts an app talks to, the runtime and Android’s framework, and replaces everything underneath with its own services on your Linux host.

Android Emulator
Android app
Android framework
Android system services
Android OS: init, launcher, system apps
Android kernel, virtual hardware
Hypervisor: QEMU with KVM
Linux host
Drion
Android app, unmodified
Android framework, real AOSP code
Drion system services
no Android OS underneath
no second kernel
no hypervisor
Linux host: desktop, audio, GPU
Isolation

How apps are kept apart

The emulator puts a virtual machine around the whole device, and Android’s own sandbox separates apps inside it. Drion puts a kernel boundary around every app and keeps its own services outside all of them.

Android Emulator
Linux host
Virtual machine (QEMU) · one for all apps
Android system: kernel, system services, launcher, system apps
App A
App B
App C

The virtual machine separates the whole device from your host. Inside it, apps are kept apart by Android’s own user IDs and permissions.

Drion
Linux host · your user account
Supervisor
System server
Display
sandbox
App A
sandbox
App B
sandbox
App C

The Linux kernel walls off each app’s processes and private files from the host, other apps and Drion’s own services. The network is shared with the host.

Side by side

The practical differences

Aspect
Android Emulator
Drion
Built for
Testing apps during development, on the Android versions and device profiles you choose.
Running Android apps on Linux, as part of the desktop or device.
What runs
A complete Android system image, its own kernel included, in a QEMU virtual machine.
Each app as its own Linux process, served by Drion’s system services.
Host requirements
Hardware virtualization: a CPU with Intel VT-x or AMD-V, and KVM your user is allowed to use. Doesn’t run inside another virtual machine.
No virtualization and no Android-specific kernel features. Needs unprivileged user namespaces.
Starting the first app
The virtual device cold-boots the first time, then resumes from a Quick Boot snapshot. Either way, Android runs before your app does.
No Android system to boot. An app starts like any other program.
Alongside your apps
The whole virtual device, with the memory its hardware profile assigns. Google suggests a computer with 16 GB of RAM.
A few Drion services.
Windows
The whole device screen, in Android Studio’s Running Devices window by default or in a separate window.
One window per app. Fullscreen in Gamescope on SteamOS, maximized on Ubuntu Touch.
Desktop integration
Clipboard sharing, the host webcam as a camera, and the host microphone once you turn it on. Location is simulated, set on a map or from a route file.
App menu, clipboard, audio and notifications on Linux desktops, partly on SteamOS and Ubuntu Touch. Camera and microphone are brokered by the system server.
Network
Behind its own virtual router, which reaches the host at 10.0.2.2. Incoming connections need port redirection.
Apps use the host’s network directly, including services that listen only on your machine.
Google Play
Separate system images with the Play Store. They don’t allow root access.
Optional, installed in a couple of clicks from the store list in Drion’s launcher. Other app stores work too.
Arm-only apps on x86_64
Google added Arm translation to its x86_64 Google APIs and Play images with Android 11, for app development and debugging only.
Drion comes with a Native Bridge translator.
Developer tools
adb and a control console, Android Studio integration, snapshots, and hardware profiles for many device types.
A standard, authenticated ADB endpoint: unmodified adb and Android test tooling work against it.
Which fits

Who each one is for

The emulator is a development tool: it gives you a whole device to test against. Drion is for running apps as part of your Linux system.

Android Emulator

When you are building an app

Test on the Android version and device profile you pick, simulate location, save a state and return to it, and debug from Android Studio.

Drion

When you want to use apps on Linux

Each app in its own window, on your desktop’s audio, camera and network, with no virtual device running in the background.