Android in Linux-Containern ausführen: Waydroid
(waydro.id)- Waydroid ist ein Projekt, das ein vollständiges Android-System als Container auf Wayland-basierten GNU/Linux-Desktops bootet, sodass Android-Apps zusammen mit Linux-Apps wie native Linux-Anwendungen ausgeführt werden können
- Mithilfe von Linux-Namespaces, LXC und der Binder-Schnittstelle greift der Android-Container direkt auf die benötigte Hardware zu und unterstützt GNU/Linux-Plattformen auf arm, arm64, x86 und x86_64
- Android-Apps können in den Linux-Anwendungsordner integriert werden, und es werden je nach Nutzung verschiedene Ausführungsmodi wie Multi-Window Mode, Full UI Mode und Fullscreen Mode bereitgestellt
- Die Laufzeitumgebung besteht aus einem minimal angepassten Android-System-Image auf Basis von LineageOS; das aktuelle Image basiert auf Android 13
- Nach der Installation muss der Dienst waydroid-container gestartet und im App-Menü der Assistent für den ersten Start durchlaufen werden; die Waydroid-Linux-Beta-Distributionen funktionieren nicht im Live-Modus, sondern in einer installierten Umgebung
Android-on-Linux-Architektur von Waydroid
- Waydroid verwendet auf normalen GNU/Linux-Systemen mit Wayland-basierten Desktop-Umgebungen einen Ansatz, bei dem ein vollständiges Android-System als Container gebootet wird
- Das Android im Container verwendet Linux-Namespaces
- user
- pid
- uts
- net
- mount
- ipc
- Das Android-System greift über LXC und die Binder-Schnittstelle direkt auf die benötigte Hardware zu
- Unterstützte Plattformen sind GNU/Linux-basierte arm-, arm64-, x86- und x86_64-Systeme
- Das Projekt ist kostenlose Open-Source-Software, und das Repository befindet sich auf GitHub
Desktop-Integration und Ausführungsmodi
- Android-Apps laufen auf dem Desktop neben Linux-Anwendungen, und Waydroid fügt Android-Apps dem Linux-Anwendungsordner hinzu
- Die Ausführungsmodi sind je nach Nutzung aufgeteilt
- Multi-window mode: Erweitert die Android-Freeform-Window-Definition um zusätzliche Funktionen
- Full UI Mode: Zeigt die vollständige Android-Benutzeroberfläche für Spiele und Fullscreen-Entertainment an
- Für Desktop- und Kiosk-Einsätze kann der Fullscreen Mode verwendet werden
- Bei der Performance zielt das Projekt mit Wayland und AOSP mesa auf ein Verhalten, das so nah wie möglich an nativ liegt
- Die Android-Laufzeitumgebung wird mit einem minimal angepassten Android-System-Image auf Basis von LineageOS ausgeliefert; das aktuelle Image basiert auf Android 13
Dokumentation, Installation, Waydroid-Linux-Beta
- Dokumentation und Issue-Tracking sind über separate Links verfügbar
- Dokumentation: docs.waydro.id
- Bug-Reports: GitHub Repo
- Entwicklungs-Repository: GitHub
- Installationsdokumentation für Desktops: installation docs
- Manueller Image-Download: SourceForge
- Der schnelle Installationsablauf für systemd-Distributionen folgt der distributionsspezifischen Installationsdokumentation; falls der automatische Start nicht erfolgt ist, muss der Dienst waydroid-container gestartet und Waydroid im Anwendungsmenü geöffnet werden, um den Assistenten für den ersten Start durchzuführen
- Wenn beim ersten Start abgefragt, werden für System OTA und Vendor OTA die OTA-Links eingegeben
- System OTA:
https://ota.waydro.id/system - Vendor OTA:
https://ota.waydro.id/vendor
- System OTA:
- Waydroid-Linux Beta sind vollständig integrierte Distributionen, die die Integrationsmöglichkeiten demonstrieren sollen, die Waydroid umsetzen kann
- Die erste Alpha-Version begann mit Ubuntu 20.04 (focal)
- Inzwischen sind auch Ubuntu 22.04 (jammy) und Debian 12 (bookworm) enthalten
- Enthalten sind verschiedene Tools und Skripte, um den möglichen Arbeitsumfang zu erweitern
- Da Waydroid Kernel-Module für LXC und Binder verwendet, funktioniert Waydroid-Linux nicht im Live-Modus; für einen ordnungsgemäßen Betrieb ist eine Installation erforderlich
- Für die Beta-Downloads wird auf die README.md verwiesen; als Beispiel-Releases werden Ubuntu 22.04 KDE-Plasma, Ubuntu 22.04 Gnome, Debian 12 Beta, Ubuntu 21.10 Beta sowie frühere Alpha-Releases angeboten
1 Kommentare
Meinungen auf Hacker News
Ich bin überrascht, dass das auf der Frontpage gelandet ist. Es ist ja ziemlich bekannte Software.
Schade ist, dass es für Waydroid keine von Google bereitgestellten Images gibt, etwa generische System-Images. Mir ist unwohl dabei, mein Passwort in irgendein ROM aus dem Internet einzugeben.
https://source.android.com/docs/core/tests/vts/gsi
Für ein Projekt wie Waydroid, das Community-Support und kontinuierliche Bereitstellung braucht, ist es eine naheliegende Wahl. Google hat im Laufe der Jahre aus AOSP, der Grundlage von Android, immer wieder viele ursprünglich freie und Open-Source-Bestandteile entfernt, sodass Projekte wie LineageOS Ersatzkomponenten entwickeln mussten. Trotzdem dürfte LineageOS weniger Änderungen an AOSP vornehmen als die meisten Smartphone-Hersteller, Google eingeschlossen.
Ich fände es schön, ein containerisiertes Android zu haben, das man auf dem Mac mit etwas wie Docker Desktop oder OrbStack starten kann.
Ich würde gern ein Docker-Image anpassen, einen gerooteten Man-in-the-Middle-Proxy vorkonfigurieren und dann Android-Apps darauf laufen lassen, um Netzwerkverkehr und API-Aufrufe viel leichter zu beobachten.
sudo ip netns exec wiresharkDas war die Grundlage, auf der FuriLabs die Android-App-Integration gut umgesetzt hat. Natürlich wurde es geforkt und [0] stark angepasst, aber die User Experience, Android-Apps auf einem Linux-Phone nutzen zu können, war hervorragend.
[0] https://github.com/FuriLabs/waydroid
Das Furiphone FLX1 nutzt das intensiv, und es ist wirklich gut. Man kann damit das meiste tun, was man mit einem echten Android-Phone machen möchte.
Natürlich sind meine Anforderungen nicht sehr groß, aber ich kenne Leute, die es für Signal und Spotify verwenden. Ein großartiges Projekt und genau passend für Linux-Phones.
Am Ende müsste ich wohl zwei Smartphones mit mir herumtragen. Banking- und Kreditkarten-Apps sind für mich täglich benötigte Pflicht-Apps, und bei manchen Konten kann ich mich selbst im Desktop-Browser ohne Authentifizierung per Smartphone-App nicht einmal anmelden. Auch einzelne Zahlungen erfordern häufig eine Bestätigung in der Smartphone-App. Ich bin nicht in der Lage, für eine freiere User Experience das Konto zu wechseln.
Abseits von Finanzthemen muss ich in meinem Hauptjob die Google-Suite nutzen, und bei anderer Arbeit musste ich auch Discord verwenden. Das ginge vermutlich über den Browser, auch wenn mit weniger Funktionen, aber bei Banking- und Kreditkarten-Apps ist das nicht so.
Das ist keine Beschwerde über Waydroid oder das FLX1; ich schätze die Arbeit und Kreativität sehr. Ich habe lange davon geträumt, ein vollständig freies und Open-Source-Phone zu besitzen und selbst mitzubauen, und ich weiß, wie viel Arbeit das ist. Früher hatte ich auch zwei Nokia N900.
Aber die Zeiten haben sich geändert, und ich hoffe, dass sich ein Weg findet, die Apps oder Protokolle, die der heutige Alltag verlangt, auf oder neben einem System auf Basis freier und Open-Source-Software auszuführen.
Allerdings könnte das fehlende OLED-Panel ein entscheidender Nachteil sein.
Ich habe drei Apps, die ich vor langer Zeit gekauft habe: ein Schwedisch-Wörterbuch, ein Deutsch-Schwedisch-Wörterbuch und ein Englisch-Schwedisch-Wörterbuch.
Man kann sie noch installieren, aber im App Store werden sie nicht mehr angeboten. Das Unternehmen Norstedts ist natürlich auf ein Abo-Modell umgestiegen. Ich nutze Waydroid, um diese Apps auf dem Desktop zu verwenden, und bin sehr zufrieden damit.
Viele Apps verlassen sich darauf, auf „offiziellen“ Android-Distributionen wie denen von Google oder Samsung zu laufen, und funktionieren nicht auf Waydroids Lineage-basierter Distribution.
Ein Wine-ähnlicher Ansatz wie https://gitlab.com/android_translation_layer/android_transla... könnte helfen, Apps vorzugaukeln, dass sie auf einer „offiziellen“ Android-Distribution laufen.
Der Wine-ähnliche Ansatz von ATL ist zum Nachahmen von APIs sicherlich intuitiver, erfordert aber trotzdem eine eigene Neuimplementierung für ATL. Waydroid dagegen führt eine vollständige Android-Umgebung aus, sodass die Möglichkeit besteht, Magisk oder microG wiederzuverwenden.
Jedes Mal, wenn ich das sehe, denke ich: „Cool! Damit könnte ich tolle Android-Apps ausführen, für die es keine Linux-Version gibt“ – aber mir fällt jedes Mal nichts ein. Gibt es eine Android-App, die man unbedingt haben muss?
Organic Maps hat zwar eine Desktop-Linux-Version, aber von Funktionsgleichheit ist sie noch weit entfernt. Das könnte sich allerdings dank dieser Förderung [1] ändern, mit der eine gute Desktop-UI für Organic Maps entstehen soll.
[1] https://nlnet.nl/project/OrganicMaps-ConvergentUI/
Kann dieser Container auf Hardware-USB-Geräte zugreifen? Ich habe ein Moondrop FreeDSP USB-C-Kabel mit PEQ, das nur mit einer furchtbaren Android-App funktioniert.
Das Android-Tablet, das ich hier habe, hat auch noch einen schlechten Touchscreen, sodass das Ändern der EQ-Einstellungen ewig dauert. Ich würde das einfach gern mit einem Linux-Laptop machen.
Und selbst wenn nicht: Am Ende ist es ein Linux-Container, also sollte man es mit ein paar udev-Regeln irgendwie zum Laufen bekommen.
Es gibt ein paar Dinge, die bei solchen Projekten immer wieder zu fehlen scheinen. Es mangelt daran, die Hardware-3D-Beschleunigung des Hosts mit den OpenGL-ES- und Vulkan-Versionen zu nutzen, die die meisten Smartphones nativ unterstützen.
Außerdem haben viele Apps eingebaute Methoden, um zu erkennen, dass sie nicht auf einem Smartphone laufen; sie prüfen cpuinfo, gleichen es mit dem behaupteten Gerät ab und beenden sich dann.
Die von Geräten erwartete ARM-Unterstützung nimmt ebenfalls zu, und damit auch der erwartete Durchsatz. Dadurch steigt die erforderliche x86-Host-Leistung, um selbst einen gewöhnlichen modernen mobilen ARM-SoC zu emulieren, immer weiter.
Schließlich liegt die unterstützte Android-Version fast immer drei bis vier Generationen hinter der aktuellen zurück. Apps stellen die Unterstützung für ältere Android-Versionen schnell ein oder laufen auf älteren OS-Versionen mit weniger Funktionen und Optimierungen. Die Android-Basisversion dieses Projekts stammt aus dem Jahr 2020.
Anekdotisch: Selbst BlueStacks, das in diesem Bereich den wohl kompatibelsten und am besten optimierten Emulations-Stack hat, ist auf einem 7800X3D / RTX 3090 bei den meisten Spielen langsamer als die native Ausführung auf einem Snapdragon-8-Smartphone vom letzten Jahr.
virtio-gpu-rutabaga: https://www.qemu.org/docs/master/system/devices/virtio-gpu.h...
Rutabaga Virtual Graphics Interface: https://crosvm.dev/book/appendix/rutabaga_gfx.html
gfxstream: https://android.googlesource.com/platform/hardware/google/gf...
„Gfxstream Merged Into Mesa For Vulkan Virtualization“ (2024-09)
https://www.phoronix.com/news/Mesa-Gfxstream-Merged
Ich weiß nicht, warum es keinen offiziellen x86-Container oder kein offizielles ROM für die Android-Entwicklung gibt. Lassen CI-Builds von Android-Apps keine Tests auf aktuellen Android-Versionen laufen? Ich frage mich, wie CI-Builds von APKs GUI-Tests ohne Android-Container ausführen.
Erstaunlich ist, dass niemand das so abstrahiert hat, dass man mehrere Android-Container unter LXC ausführen kann.
Bei Waydroid gibt es nur ein einziges Image. Für mich sah es so aus, als würde es einen stark gepatchten Custom-Linux-Kernel verwenden, und ich habe es nicht ganz durchdrungen, aber die LXC-Interface-Seite wirkte ziemlich simpel.