Direkt zum Hauptinhalt

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.

Intro

Es gibt zu viele Linux-Distros, um auf jede einzugehen, was die Installation angeht. 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.5.0 mit LineageOS 18.1 (Android 11)

Erfordernisse (Requirements)

Die benötigten Systemeigenschaften sind in https://wiki.archlinux.org/title/Waydroid#Wayland_session_manager beschrieben.

Es wurde berichtet, dass Waydroid auf auch Raspberry Pi's laufen kann!

One-Liner: Setup als fertiges Bash Script

Folgende einzelne Zeile installiert das aktuellste FabAccess Borepin Release automatisch und vollständig auf Linux-Systemen:

curl -L -s https://y.fab-access.org/waydroid | bash
curl -s https://gitlab.com/fabinfra/fabaccess/borepin/-/raw/main/waydroid-installer.sh | bash

Das grundlegende Setup

Wer das Setup manuell durchführen möchte, kann auch alle nachfolgenden Schritte verfolgen.

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 --system_channel https://ota.waydro.id/system --vendor_channel https://ota.waydro.id/vendor --rom_type lineage --system_type VANILLA

Fehlerbehebung (Fedora)

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:
sudo 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
sudo systemctl restart waydroid-container.service

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

image.png

image.png

Mit der Leertaste können Pakete ab- oder zugewählt werden:

image.png

Danach startet die Installation. libhoudini ist ca. 100 MB groß.

Wir können das Menü auch überspringen und einen vollständigen CLI-Befehl eingeben:

sudo venv/bin/python3 main.py --android-version 11 install libhoudini

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:

image.png

Und letztlich Borepin in Waydroid starten:

Der Kaltstart von Borepin bzw. Waydroid kann ca. 30-60 Sekunden dauern.

image.png

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:

image.png

FabAccess Borepin aus dem Startmenü heraus starten

Waydroid wird standardmäßig in das Menü eingebunden:

grafik.png

Im Menü-Editor kann dieser Eintrag auch angesehen werden:

grafik.png

FabAccess Borepin per Kommandozeile starten

Das geht auch:

waydroid app launch org.fab_infra.fabaccess

oder mit Cage:

cage 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:

Bildschirmfoto_20250106_173317.png

Drag & Drop Fenster

Durch Gedrückthalten der Super-Taste (in der Regel die Taste zwischen linkem Ctrl und Alt) und Anklicken einer beliebigigen Stelle des Wayland-Fensters kann dieses an die gewünschte Stelle verschoben werden.