Waydroid: Android-Apps unkompliziert unter Linux nutzen

Aus LinuxUser 11/2023

Waydroid: Android-Apps unkompliziert unter Linux nutzen

© Kirill Makarov / 123RF.com

Platztausch

Mit Waydroid holen Sie Android-Apps auf einfache und effektive Weise auf den Linux-Desktop.

Über Emulatoren lassen sich Anwendungen fremder Betriebssysteme in unterschiedlichen Konstellationen unter Linux betreiben. Zu den bekanntesten Lösungen dieser Art zählen Wine (Windows), Dosbox (DOS) und SNES (Nintendo-Spiele). Ein Pendant für Android ließ jedoch lange auf sich warten, trotz der deutlichen Nähe zwischen den beiden Systemen: Der jeweils aktuelle Android-Kernel leitet sich von einem Linux-Kernel mit Long Time Support (LTS) ab. Trotz vieler Patches weist er im Grunde mehr Ähnlichkeiten zum Original auf als Unterschiede. Dennoch ist es im Detail aufwendig und schwierig, Android-Anwendungen nativ unter Linux zu betreiben [1].

Die Macher der freien Software Waydroid [2] haben es sich zum Ziel gesetzt, Android-Apps möglichst einfach und flexibel ins Linux-Universum zu integrieren. Dabei greifen sie auf einen bewährten Ansatz zurück und erfinden das Rad nicht neu: Die Software Anbox beschritt bereits 2017 einen sehr ähnlichen Weg, den sie jedoch nicht konsequent weiterverfolgten. Die Weiterentwicklung von Anbox wurde 2023 schließlich abgebrochen.

Waydroid basiert wie Anbox auf einer Container-Lösung, innerhalb derer ein Session-Management ein Android-Image einhängt und anschließend startet. Dabei stehen zurzeit zwei Images zur Verfügung, eines mit den zentralen Google-Apps (GAPPS) und eines ohne sie (VANILLA). Bei beiden handelt es sich um Abkömmlinge von LineageOS, die einem Android 11 entsprechen. Über einen integrierten Update-Mechanismus lassen sie sich jederzeit aktuell halten.

Installation

Ein Waydroid der aktuellen Version 1.4.1 lässt sich in wenigen Schritten in ein Ubuntu 22.04 LTS einbinden. Die Webseiten des Projekts beschreiben die einfach nachzuvollziehende Prozedur [3] ausführlich.

Im ersten Schritt installieren Sie, falls noch nicht vorhanden, zwei im weiteren Verlauf benötigte Ubuntu-Pakete (Listing 1, Zeile 1). Anschließend fügen Sie den lokalen Softwarequellen das offizielle Repository des Projekts hinzu (Zeile 2), über das Sie auch in Zukunft auf dem aktuellen Stand bleiben. Aus diesen Quellen erfolgt im Anschluss die Installation der Anwendung in der aktuellen Version (Zeile 3).

Damit liegen auch schon die notwendigen Programmteile in der Linux-Installation vor. Zum Abschluss weisen Sie den System- und Sitzungsmanager von Ubuntu (Systemd) noch an, den Waydroid-Container beim Hochfahren des Betriebssystems automatisch zu starten (Zeile 4).

Listing 1

Waydroid einrichten

$ sudo apt install curl ca-certificates -y
$ curl https://repo.waydro.id | sudo bash
$ sudo apt install waydroid wl-clipboard -y
$ sudo systemctl enable --now waydroid-container
$ sudo waydroid init -s SYSTEM_TYPE Image

Der erste Start

Beim Hochfahren erkundet Waydroid seine Konfiguration und stellt somit vor dem ersten Start fest, dass ihm bislang noch keine Android-Instanz hinzugefügt wurde. Dementsprechend meldet es sich mit einer grafischen Aufforderung, sich für eine der beiden verfügbaren Instanzen zu entscheiden (Abbildung 1).

Abbildung 1: Bei der Installation wählen Sie das gewünschte Android-Image aus.

Abbildung 1: Bei der Installation wählen Sie das gewünschte Android-Image aus.

Hier wählen Sie entweder das bereits erwähnte Google-freie VANILLA oder aber GAPPS für eine nahtlose Integration ins Googleversum. Falls Sie Ihre Meinung später ändern, weisen Sie Waydroid auf der Kommandozeile mit init an, das jeweils andere Image zu laden und zum Mounten und Starten vorzubereiten (Listing 1, Zeile 5).

Allerdings kann Waydroid bislang lediglich eine Android-Session innerhalb eines Containers ausführen. Deswegen benennen Sie das bereits geladene Abbild am besten um, bevor Sie es durch das Herunterladen des anderen überschreiben. Die Images einer Waydroid-Session liegen im Verzeichnis /var/lib/waydroid/images/ und heißen system.img und vendor.img. Diese beiden Dateien sollten Sie gegebenenfalls bei einem Wechsel umbenennen, um sie zu konservieren.

Anwendungen nutzen

Mittlerweile ist die Installation so weit abgeschlossen, dass Sie erste Android-Apps starten können. Diese mischen sich im Startordner von Ubuntu unter die nativen Linux-Anwendungen (Abbildung 2).

Abbildung 2: Die Android-Apps mischen sich im Ubuntu-Programmstarter unter die nativen Linux-Anwendungen.

Abbildung 2: Die Android-Apps mischen sich im Ubuntu-Programmstarter unter die nativen Linux-Anwendungen.

Haben Sie das GAPPS-Image gestartet, müssen Sie es noch bei Google registrieren (Google Play Certification), um in den vollen Genuss von Google Play zu kommen. Dazu starten Sie mit sudo waydroid shell eine Waydroid-Shell. Darin ermitteln Sie anschließend mit dem etwas sperrigen Befehl aus der ersten Zeile von Listing 2 die Device-ID und registrieren sie unter https://www.google.com/android/uncertified bei Google [4].

Listing 2

Google Play Certification

$ ANDROID_RUNTIME_ROOT=/apex/com.android.runtime ANDROID_DATA=/data ANDROID_TZDATA_ROOT=/apex/com.android.tzdata ANDROID_I18N_ROOT=/apex/com.android.i18n sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = \"android_id\";"
[...]
$ waydroid session stop
$ waydroid session start

Die Registrierung dauert nach der Anmeldung bei Ihrem Google-Konto in der Regel nur wenige Sekunden. In einschlägigen Foren finden sich allerdings Hinweise, dass die Prozedur bis zu einigen Minuten dauern kann. Nach dem Registrieren steht ein Neustart der Waydroid-Session an (Listing 2, Zeile 3 und 4).

Im Android-Universum

Wie schon erwähnt mischen sich im Ubuntu-Anwendungsstarter die Icons der mit dem Google-Image installierten Android-Apps mit denen der nativen Installation. Um eine Übersicht zu erhalten, welche Apps installiert wurden, rufen Sie auf der Kommandozeile den Befehl waydroid app list auf. Die Einträge dieser Liste können Sie auch zum Aufruf einer Android-Anwendung von der Kommandozeile aus nutzen. Listing 3 zeigt in den Zeilen 3 bis 5 als Beispiel den Eintrag für ein installiertes Google Docs, das Sie im Terminal mit dem Kommando aus Zeile 7 direkt starten.

Listing 3

Apps starten

$ waydroid app list
[...]
Name:           Docs
packageName:    com.google.android.apps.docs.editors.docs
categories:     android.intent.category.LAUNCHER
[...]
$ waydroid app launch com.google.android.apps.docs.editors.docs
$ waydroid app install App.apk

Android-Apps lassen sich also wahlweise wie am Smartphone oder Tablet über Google Play und die Google-Einstellungen (Settings | Apps) starten, mit Waydroid über den Ubuntu-Anwendungsstarter aufrufen oder aus einem Terminal heraus direkt nutzen. Tatsächlich gibt es für jede dieser Möglichkeiten spezifische Einsatzszenarien.

Zusätzliche Apps installieren Sie bei Bedarf über Google Play, auch F-Droid lässt sich auf gewohnte Weise als weitere Quelle einbinden. Zudem bietet Waydroid eine Möglichkeit, Anwendungen direkt im APK-Dateiformat einzurichten (Listing 3, Zeile 8).

Probleme

Beim regen Installieren neuer Apps werden Sie früher oder später feststellen, dass es an der einen oder anderen Stelle des Waydroid-Projekts noch ein wenig hakt. Zu den lästigsten Problemen zählt, dass das Rotieren der Anzeige die eine oder andere Anwendung stolpern lässt. Nicht alle Apps eignen sich für den Betrieb im Querformat. Das ist im Grunde keine Eigenheit von Waydroid, denn solche Apps scheitern auch nativ am Mobiltelefon oder Tablet.

Hinzu kommt jedoch der störende Umstand, dass Sie in einem solchen Fall die Hälfte der Anzeige mit der Maus nicht mehr erreichen, da Android für deren Verwendung nur die Breite des Hochformats anbietet. In früheren Versionen von Waydroid blieb der entsprechende Bereich einfach schwarz. Im aktuellen Release stellt es den Bereich zwar dar, er lässt sich jedoch nach wie vor nicht nutzen. Abbildung 3 zeigt eine solche Anwendung samt (in der Abbildung sehr klein dargestelltem) Mauszeiger am äußerst rechten Rand der ansteuerbaren Fläche.

Abbildung 3: Hier sehen Sie ein Beispiel für eine Anwendung, die sich im Querformat nicht nutzen lässt.

Abbildung 3: Hier sehen Sie ein Beispiel für eine Anwendung, die sich im Querformat nicht nutzen lässt.

Prinzipiell ließe sich eine solche Anwendung durch manuelles Rotieren in die richtige Ausrichtung bringen. Das manuelle Übermitteln der Anzeigegeometrie würde dann jedoch auch alle anderen Apps beeinflussen. Die einfachste Lösung: Sie aktivieren mit den Kommandos aus Listing 4 den Mehrfensterbetrieb des Displays, bei dem alle Anwendungen standardmäßig im Hochformat angezeigt werden (Abbildung 4).

Listing 4

Mehrfensterbetrieb

$ waydroid prop set persist.waydroid.multi_windows true
$ systemctl restart waydroid-container.service

Abbildung 4: Im Multi Windows Mode zeigt Waydroid alle Android-Apps im Hochformat an.

Abbildung 4: Im Multi Windows Mode zeigt Waydroid alle Android-Apps im Hochformat an.

Weitere Probleme können momentan noch der Betrieb der Kamera, der Lautsprecher und des Mikrofons bereiten. Zwar ist man bei Waydroid sehr darauf bedacht, die Standards von Linux möglichst transparent in den Container durchzuschleusen. Dennoch bleibt es momentan ein Glücksspiel, ob das System die entsprechende Hardware richtig anspricht. Gerade dem Zugriff auf die Kamera räumen die Entwickler schon seit geraumer Zeit viel Aufmerksamkeit ein, sodass es hier bald merkliche Fortschritte geben sollte.

Kommandozeile

Waydroid lässt sich in vollem Umfang über die Kommandozeile bedienen und konfigurieren. Da die Software jedoch in vielen Bereichen problemlos ihren Dienst verrichtet, bleiben viele dieser Optionen quasi im Verborgenen. Möchten Sie den Diensten, die Waydroid nach außen hin anbietet, genauer auf die Finger sehen, finden Sie in der Waydroid-Dokumentation ausführliche Informationen dazu [5]. Einen ersten Eindruck vermittelt ein Aufruf des Statusberichts von Waydroid (Listing 5).

Listing 5

Waydroid-Status

$ waydroid status
Session:         RUNNING
Container:       RUNNING
Vendor type:     MAINLINE
IP address:      192.168.240.112
Session user:    admunix(1000)
Wayland display: wayland-0

Läuft innerhalb des Containers keine Session, lässt sich dessen Zustand mit waydroid session start beziehungsweise waydroid session stop umschalten. Starten Sie eine Android-App, während noch keine Sitzung läuft, startet Waydroid automatisch eine Session mit.

Ist gerade kein Container aktiv, so gehen Sie mit sudo waydroid container Option ans Werk, wobei Waydroid als Optionen start, stop, restart, freeze und unfreeze akzeptiert. Für Neugierige und jene, die einem Problem auf die Spur kommen wollen, lohnt sich ein Blick in die Log-Datei waydroid.log unter /var/lib/waydroid/.

Fazit

Das sehr flexibel gehaltene, quelloffene Waydroid bietet eine gelungene Möglichkeit zum Einbinden von Android-Anwendungen in eine Linux-Installation. Apps lassen sich damit in gewohnter Weise wie am Smartphone einrichten und nutzen. Mit Wl-clipboard [6] gibt es zudem eine Möglichkeit, Daten zwischen dem nativen Linux und den Android-Anwendungen im Container auszutauschen.

Waydroid integriert sich gut in den Desktop einer Ubuntu-Installation, sodass sich die Bedienung der Android-Apps kaum von jener nativer Linux-Anwendungen unterscheidet. Es steht zu erwarten, dass das Projekt schon in naher Zukunft auch einen reibungslosen Zugriff auf die Kamera, das Mikrofon und Lautsprecher ermöglicht. Dann gibt es eigentlich kaum mehr ein Hindernis, auf dem Smartphone oder Tablet liebgewonnene Apps auch unter Linux vollwertig einzusetzen. (jlu)

Der Autor

Dr. Harald Jele ist Mitarbeiter an der Universität Klagenfurt. 1993 stieß er durch einen glücklichen Zufall auf Linux, das er seitdem gleichermaßen auf Servern und Desktops einsetzt.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 11/2023 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben