OpCode.eu.org

Blog O autorze O serwisie
2026-07-22

Waydroid, czyli emulacja Androida

Waydroid jest narzędziem pozwalającym na uruchomienie androida bądź jego aplikacji pod systemem Linux. Uruchamianie aplikacji zbudowanych dla ARM na x86 zapewniają biblioteki libndk (rekomendowana dla CPU AMD) bądź libhoudini (rekomendowana dla CPU Intel). Domyślny obraz systemu Android pochodzi z LineageOS.

instalacja w pseudo-chroot

Waydroid może być zainstalowany w pseudo-chroot opartym o przestrzenie nazw. Taka instalacja wymaga przekopiowania konfiguracji uprawnień dbus z chroot na system podstawowy:

CHROOT_DIR=/opt/games

for f in \
        /usr/share/dbus-1/services/id.waydro.Container.service \
        /usr/share/dbus-1/system-services/id.waydro.Container.service \
        /usr/share/dbus-1/system.d/id.waydro.Container.conf \
        /usr/share/polkit-1/actions/id.waydro.Container.policy
do
        cp -i $CHROOT_DIR/$f $f;
done

Ręczne uruchamianie

Domyślnie środowisko kontenerowe uruchamiane jest przez systemd. Można temu zapobiec wyłączając i blokując usługę waydroid-container (oraz powiązane usługi lxc):

disable() { systemctl stop $1; systemctl disable $1; systemctl mask $1; }
disable waydroid-container
disable lxc-net
disable lxc

Nie jest to konieczne jeżeli Waydroid został zainstalowany nie na głównym systemie (w środowisku typu chcroot).

Pozwala to na ręczne uruchamianie kontenera tylko wtedy kiedy jest to potrzebne, można do tego użyć skryptu:

# VERBOSE="--details-to-stdout --verbose"

mkdir -p /run/user/$UID/pulse/
ln -fs /var/run/pulse/native /run/user/$UID/pulse/native
sudo /usr/bin/waydroid $VERBOSE -w container start &

echo ""
echo "Use Ctrl+C in this window to close."
echo ""
cage -- waydroid $VERBOSE -w show-full-ui

sudo /usr/bin/waydroid $VERBOSE -w container stop

Obsługa

Sieć

Możliwe jest przesyłanie wszystkich, bądź wybranych pakietów do proxy (np. mitmproxy) celem ich inspekcji. Można to uzyskać poprzez:

Tagi: android