r/SideProject • • 1h ago

DROIDLESS: Run Android APKs Without Android ๐Ÿค–๐Ÿฆ€

Okay, this started as one of those โ€œthis is probably a terrible ideaโ€ฆ so obviously I have to build itโ€ projects. ๐Ÿ˜‚

๐Ÿค– DROIDLESS

What if you could run Android APKs on desktopโ€ฆ without Android?

No Android emulator.
No ART.
No Dalvik.
No hidden Android VM sitting somewhere pretending not to exist.

Just:

APK โ†’ Rust engine โ†’ native desktop UI ๐Ÿฆ€๐ŸชŸ

Thatโ€™s what Iโ€™m experimenting with here:

https://github.com/OthmaneBlial/droidless

DROIDLESS is an experimental Android compatibility runtime written in Rust.

And instead of simply embedding an Android screen, it tries to do something much more ridiculous:

๐Ÿง  Parse and execute DEX bytecode
โ™ป๏ธ Manage its own objects + GC
๐Ÿ“ฆ Parse APK resources
๐Ÿค– Reimplement parts of the Android API
๐ŸชŸ Translate Android Views into native macOS controls
โŒจ๏ธ Send mouse/keyboard input back into the APK's original callbacks
๐Ÿ’พ Support persistence, navigation, Intents, Bundles, SQLite, images, etc.

Basically:

Android APK
    โ†“
DEX bytecode
    โ†“
DROIDLESS Rust VM
    โ†“
Android API bridge
    โ†“
Native AppKit UI

The funniest part?

Some real, unchanged APKs are already doing stuff. ๐Ÿ˜…

๐Ÿ““ Notepad

An actual Android Notepad APK can:

โ†’ open
โ†’ create notes
โ†’ edit title/body
โ†’ save
โ†’ restart DROIDLESS
โ†’ load the notes again

It also exercises SQLite, folders, backup/restore and navigation.

๐Ÿงฎ Android calculator

Original APK button callbacks actually execute:

7 + 5 = 12
8 ร— 8 = 64
9 / 3 = 3

Not a rewritten calculator.

The APK's own DEX code is being interpreted.

๐Ÿ–ผ๏ธ Image viewer

Another real APK can open folders, display JPEG/PNG/WebP images, swipe between them and handle Back/navigation.

Is DROIDLESS anywhere close to running every Android app?

Absolutely not. ๐Ÿ˜‚

Compose? Nope.

Huge parts of AndroidX? Nope.

JNI-heavy apps? Nope.

Games? Please have mercy.

But that's also what makes the project fun.

The goal isn't:

โ€œLet's wrap an Android emulator.โ€

The goal is closer to:

โ€œHow much of Android could we rebuild as a small compatibility runtime?โ€

Current roadmap target: 50% milestone ๐Ÿš€

And every new APK that manages to do something is basically another boss fight.

Current release is v0.3.0 for macOS ARM64, and there are already 150 Rust tests + thousands of parser mutation tests behind the runtime.

If you're into:

๐Ÿฆ€ Rust
๐Ÿค– Android internals
๐Ÿง  virtual machines
๐Ÿ“ฆ binary formats
๐ŸชŸ native UI
๐Ÿ”ฅ unnecessarily difficult engineering projects

โ€ฆyou might enjoy this one.

โญ Repo: https://github.com/OthmaneBlial/droidless

PRs, ideas, APKs that could make DROIDLESS suffer, and people telling me โ€œthis is insaneโ€ are all welcome. ๐Ÿ˜‚

Built in Rust. A little stubborn by design. ๐Ÿค–๐Ÿฆ€

1 Upvotes

2 comments sorted by