Client für Linux - mit Waydroid installieren
Waydroid ist ein unter GNU GPL v3 lizensierter und einer von vielen gängigen Emulatoren für Android auf Linux-Systemen. Wir nutzen es, um FabAccess für Linux verfügbar zu machen (alternativ zum GTK Mono Client Build). Waydroid verwendet einen LXC-Unterbau (Container, ähnlich Docker), um zu spawnen. Wir berufen uns grundlegend auf die offizielle Dokumentation unter https://docs.waydro.id/usage/install-on-desktops.
Basic Setup
Es gibt zu viele Linux-Distros, um auf jede einzugehen. Auf dieser Seite finden sich Details zum Setup auf Kubuntu (analog: Debian, Ubuntu) und Fedora (analog: CentOS).
Diese Dokumentation beruht auf folgenden Beispielsystemen:
- OS: Kubuntu 24.04 und Fedora 40, jeweils mit aktiviertem Wayland
- Waydroid 1.4.3 mit LineageOS 18.1 (Android 11)
Das grundlegende Setup
Kubuntu:
sudo apt update && sudo apt upgrade
sudo apt install curl ca-certificates -y
curl -s https://repo.waydro.id | sudo bash
sudo apt install waydroid -y
# Die installierte Waydroid Version checken
dpkg -l | grep waydroid
#Init ausführen (Images installieren)
# Folgendes Images werden dabei automatisch von https://sourceforge.net/projects/waydroid/files/images/system/lineage/waydroid_x86_64/ geladen:
# - LineageOS 18.1 (20241102 VANILLA) - das Image ist ca. 800 MB groß
# - LineageOS 18.1 (20241102 MAINLINE) - das Image ist ca. 180 MB groß
sudo waydroid init
Fedora
sudo dnf update
curl -s https://repo.waydro.id | sudo bash
sudo dnf install waydroid -y
# Die installierte Waydroid Version checken
dnf list installed | grep waydroid
#Init ausführen (Images installieren)
# Folgendes Images werden dabei automatisch von https://sourceforge.net/projects/waydroid/files/images/system/lineage/waydroid_x86_64/ geladen:
# - LineageOS 18.1 (20241102 VANILLA) - das Image ist ca. 800 MB groß
# - LineageOS 18.1 (20241102 MAINLINE) - das Image ist ca. 180 MB groß
sudo waydroid init
Fehlerbehebung (Fedora)
Unter Umständen kennt Waydroid beim Initialisieren noch keine URLs, wovon es seine Images laden soll. Ggf. startet es daher mit folgendem Abfragedialog. Folgende Eintragungen sollten ggf. vorgenommen werden - im Anschluss mit Download
bestätigen.
- System OTA: https://ota.waydro.id/system
- Vendor OTA: https://ota.waydro.id/vendor
- Android Type:
VANILLA
Falls das bisherige Setup mit Fehlern scheitert, müssen ggf. die SELinux Regeln für systemd
und waydroid
angepasst werden:
ausearch -c 'systemctl' --raw | audit2allow -M my-systemctl
semodule -X 300 -i my-systemctl.pp
ausearch -c 'waydroid' --raw | audit2allow -M my-waydroid
semodule -X 300 -i my-waydroid.pp
Temporär - d.h. nur Testweise - kann auch mit setentforce 0
gearbeitet werden.
Etwaige Anpassungen sind außerdem an der Config von Nöten, falls "Failed to load config for waydroid" auftritt (siehe auch Issue 493 und 652):
sudo vim /var/lib/waydroid/lxc/waydroid/config
Auskommentieren:
#lxc.apparmor.profile = unconfined
Service und Logs
Waydroid wird automatisch als Service installiert und auch gestartet. Wir können den Service starten, stoppen und neustarten, und darüberhinaus Logs auslesen:
sudo systemctl status waydroid-container.service
sudo systemctl start waydroid-container.service
sudo systemctl stop waydroid-container.service
sudo systemctl restart waydroid-container.service
# Journal und Log File:
sudo journalctl -f -u waydroid-container.service
sudo less /var/lib/waydroid/waydroid.log
#oder kurz:
waydroid log
#oder über LXc:
lxc-info -P /var/lib/waydroid/lxc -n waydroid -sH
Python pip und venv installieren
Kubuntu:
sudo apt install python3-pip python3-venv
Fedora:
sudo dnf install python3-pip python3-venv
Zwischenablage (Clipboard) reparieren
Bei der Installation klappt u.U. die geteilte Zwischenablage nicht. In diesem Fall benötigt es die folgenden Pakete.
Kubuntu:
sudo dnf install wl-clipboard
Fedora:
sudo apt install wl-clipboard
und dann:
sudo pip install pyclip --break-system-packages #unsauberer Trick. Hat jemand eine bessere Lösung?
Session starten
# als normaler Nutzer
waydroid session start
# oder im Hintergrund:
nohup waydroid session start &
Optionen konfigurieren
Wir stellen an ein paar Schrauben!
Für das Ausführen muss eine Waydroid Session bereits laufen!
Multi-Window Option setzen
Aktiviert/deaktiviert die Fensterintegration mit dem Desktop
waydroid prop set persist.waydroid.multi_windows true
Auflösung des Fensters anpassen
Standardmäßig wird die Session im Vollbildmodus gestartet. Auf einem großen Monitor ist das ggf. screcklich. Das lässt sich optional setzen. Siehe https://github.com/waydroid/waydroid/issues/700
# Zum Zurücksetzen der Standardeinstellungen folgendes ausführen:
waydroid prop set persist.waydroid.width ""
waydroid prop set persist.waydroid.height ""
# Höhe aus Breite berechnen per Verhältnis (z.B. 16:9):
#width = 900 / 16 * 9 =~ 506
waydroid prop set persist.waydroid.height 900
waydroid prop set persist.waydroid.width 506
Netzwerk-Traffic zwischen Gast und Host erlauben
Falls nach der Installation Anwendungen in Waydroid keine Internetverbindung haben, fehlt möglicherweise eine Konfiguration in der Firewall und/oder in einem Waydroid-Script. Siehe auch https://github.com/waydroid/waydroid/issues/143
Fix in Waydroid Script
sudo sed -i~ -E 's/=.\$\(command -v (nft|ip6?tables-legacy).*/=/g' /usr/lib/waydroid/data/scripts/waydroid-net.sh
ARM-Builds auf x86-Systemen erlauben (libhoudini) und mehr
Normalerweise wird Waydroid vermutlich eher auf einem x86-System installiert werden. Android Applications (APKs) sind aber häufig nur für arm7/arm8 kompiliert. Dafür gibt es einen Workaround namens libhoudini. Dafür nutzen wir folgendes Script aus dem Projekt https://github.com/casualsnek/waydroid_script. Wir legen uns eine virtuelle Umgebung (venv) für das Projekt an und installieren die Requirements.
# als normaler Nutzer
cd ~
git clone https://github.com/casualsnek/waydroid_script
cd waydroid_script/
python3 -m venv venv
venv/bin/pip install --upgrade pip
venv/bin/pip install -r requirements.txt
Danach führen wir aus und wählen libhoudini aus:
sudo venv/bin/python3 main.py
Mit der Leertaste können Pakete ab- oder zugewählt werden:
Danach startet die Installation. libhoudini ist ca. 100 MB groß.
FabAccess Client (Borepin) installieren
Wir laden den Client als APK-Datei direkt herunter:
# als normaler Nutzer
cd ~
wget https://gitlab.com/api/v4/projects/20862588/packages/generic/borepin/v0.3.11/org.fab_infra.fabaccess-Signed.apk
waydroid app install org.fab_infra.fabaccess-Signed.apk
# wir prüfen, ob das geklappt hat:
waydroid app list | grep fabaccess
# der Output sollte sein:
packageName: org.fab_infra.fabaccess
Siehe auch Downloads / Demo
Waydroid Client anzeigen und benutzen
Nachdem der Container gestartet ist und die Session läuft, können wir das User Interface anzeigen:
# als normaler Nutzer
waydroid show-full-ui
Die Standardoberfläche bei/nach dem Start:
Und letztlich Borepin in Waydroid starten:
Der Kaltstart von Borepin bzw. Waydroid kann ca. 30-60 Sekunden dauern.
Waydroid in einem Fenster anzeigen
Unter Wayland hat das Client-Fenster leider keine Drag&Drop-Funktion. Wir können es in einen Rahmen einsperren, in dem wir das Tool "cage" verwenden
Kubuntu:
sudo apt install cage
Fedora:
sudo dnf install cage
und dann Waydroid ins Fenster zwingen:
cage waydroid show-full-ui
Dadurch erhalten wir folgende Ansicht:
FabAccess Borepin aus dem Startmenü heraus starten
Waydroid wird standardmäßig in das Menü eingebunden:
Im Menü-Editor kann dieser Eintrag auch angesehen werden:
FabAccess Borepin per Kommandozeile starten
Das geht auch:
waydroid app launch org.fab_infra.fabaccess
Waydroid Upgrade
Waydroid bekommt regelmäßig Updates. Wir können mit folgendem Befehl aktualisieren:
sudo waydroid upgrade
Das im Hintergrund befindliche Base-Image für das Betriebssystem macht sich auch visuell bemerkbar und kann direkt per Download
aktualisiert werden:
Keine Kommentare