I Spent a Week Trying to Install Waydroid… Here’s How I Finally Got It Working
Installing Waydroid — the brilliant project that lets you run full Android in a container on Linux — should be easy. But if you’re not on Ubuntu, expect pain. My week-long journey to get it running on Arch involved broken downloads, MITM spoofing, and some serious headbanging… until I found the one AUR package that fixed everything.
SourceForge
Waydroid hosts its Android system images on SourceForge. While SourceForge is still a functional and appreciated platform, in 2025 it can feel a bit dated — especially since it lacks download resume support and can be painfully slow, at least in my case.
Maybe it was just me — maybe it was that specific link, that specific mirror, or just bad luck. But living in Dehradun, India, and relying on cellular data, the mirrors were wildly unstable. I tried downloading the .zip
files multiple times, and each attempt failed partway through. Every time, it restarted from byte zero. No resume, no progress — just endless retries and mounting frustration.
To make matters worse, I tried digging around to find the exact expected locations of the system
and vendor
images Waydroid uses internally — but it wasn’t feasible. There’s no clear documentation or directory reference for it. Honestly, developers should consider putting that info right on the download page. It would’ve saved a lot of trial, error, and time.
Plan B: Google Colab
Thinking I could outsmart the installer, I used Google Colab to download the files. It worked flawlessly — Colab grabbed the .zip
without choking.
But when I tried moving the files to my system and placing them where Waydroid expected (/var/cache/waydroid/
or something close), nothing worked. Waydroid uses a custom Python downloader that fetches, verifies, and unpacks the files internally. Dropping in a pre-downloaded file doesn’t cut it — the structure, hash checks, and logic are all tightly integrated. I wasn’t just able to find out where to put those images i had them in hand, i was replacing the files which python request library path was creating, as i got that directory when i intentionally disconnected the internet then received an error with the directory on where waydroid is downloading the image, tried replacing those, didn’t work for obvious reasons.
Plan C: Spoofing with mitmproxy
At this point, I went full hacker.
I spun up mitmproxy to intercept Waydroid’s Python requests
calls. My idea was simple:
- Spoof the SourceForge URL
- Point it to my local or Colab-hosted file
- Trick the installer
To my surprise, this actually worked. The requests were intercepted and redirected — the file even “downloaded” instantly.
But again, I didn’t know exactly where to place the file or how to mimic the post-download structure Waydroid expected. The unpacking logic failed, and I was back to square one.
The Glorious AUR Fix
After nearly giving up, I stumbled across this:
Just one command:
yay -S waydroid-image-gapps
And everything worked. This AUR package:
- Downloads the correct Android image with GApps pre-included
- Bypasses the fragile SourceForge download step
- Installs it in the right place with the right structure
No more broken downloads. No more hacking the installer.
Lessons Learned
- If you’re on Arch, check the AUR first. Someone else has probably already suffered for you.
- SourceForge is still a solid platform, but it’s showing its age for large, non-resumable downloads.
- Waydroid’s internal logic doesn’t like shortcuts.
- Spoofing install scripts with mitmproxy is fun, but fragile.
- Sometimes the right package makes all the difference.
- Clear documentation of required file locations (like
system
andvendor
) would make the install process far more developer-friendly.
Conclusion
Waydroid is amazing — once it works. But getting there on anything other than Ubuntu can feel like running Android in BIOS mode. If you’re on Arch, the waydroid-image-gapps
AUR package is your lifeline. It saved me after a week of madness, and I hope it saves you too.