it:google:android

Android

Chtěl jsem rozběhnout Android na Linuxu s Google Play. Abych mohl nainstalovat a spustit některé aplikace z Google Play. A tady jsou moje zkušenosti s různými variantami.

Anbox je bezplatná a open-source vrstva kompatibility, jejímž cílem je umožnit spouštění mobilních aplikací a mobilních her vyvinutých pro Android na distribucích Linuxu.

U Anboxu jsem narazil na to, že již není aktivně vyvíjen. Nainstalovat se dá ze snapu, ale kvůli opuštění vývoje jsem se rozhodl nevyužít.

snap install --devmode --beta anbox

Waydroid je vlastně takové pokračování Anboxu. Je to kontejner s Androidem pro Wayland. Jako první kámen úrazu je fajn říct, že Wayland je povinný. Když jsem se pokoušel spustit Waydroid pod X11, tak házel chybové hlášení.

[23:52:00] WAYLAND_DISPLAY is not set, defaulting to "wayland-0"
[23:52:00] Wayland socket '/run/user/1000/wayland-0' doesn't exist; are you running a Wayland compositor?

Proto jsem se musel do Ubuntu přihlásit přes compositor Wayland - což je docela jednoduché. Stačí při přihlašování do systému před vyplněním hesla zvolit, který compositor se má použít. Zda staré Gnome nebo Wayland.

Pak jsem šel do dokumentace, kde je postup na instalaci pro Ubuntu a jiné OS.

sudo apt install curl ca-certificates -y
curl https://repo.waydro.id | sudo bash
sudo apt install waydroid -y
sudo systemd start waydroid-container
waydroid init -f -s GAPPS #pro stažení kontejneru včetně Google Play 

Po instalaci stačí v Ubuntu najít novou aplikaci Google Play Store nebo Settings. Obě jsou už spouštěny z kontejneru.

Ovšem po spuštění Google Play jsem narazil na problém. Kontejner se choval tak, že není připojený k internetu. Takže Google Play se nikam nepřipojí a nepodaří se nic stáhnout.

Spustil jsem si shell Waydroidu:

sudo waydroid shell

A rovnou jsem otestoval pomocí příkazu ping, že mohu komunikovat s počítači v internetu. A potvrdilo se mi, že ne.

Později jsem našel instrukce pro nastavení sítě. Protože používám Ubuntu a ufw, tak toto byly příkazy, které jsem musel zadat.

sudo ufw allow 53
sudo ufw allow 67
sudo ufw default allow FORWARD

Ještě pro jistotu uvedu, že se instrukce nezadávají ve Waydroid shellu, ale v Ubuntu. Porty 53 a 67 jsem měl povolené, ale forwarding ne.

Když jsme si chtěl ověřit, jak se projevilo poslední pravidlo, tak jsem dal vypsat podrobnosti pomocí příkazu:

ufw status verbose
Stav: aktivní
Přihlašování: on (low)
Výchozí: deny (příchozí), allow (odchozí), allow (směrované)
Nové profily: skip
 
Do                         Akce        Od
--                         ----        --
53                         ALLOW IN    Anywhere                   # open DNS port
67,68/udp                  ALLOW IN    Anywhere                   # open DHCP ports
53 (v6)                    ALLOW IN    Anywhere (v6)              # open DNS port
67,68/udp (v6)             ALLOW IN    Anywhere (v6)              # open DHCP ports

Řádek: Výchozí: deny (příchozí), allow (odchozí), allow (směrované) ukazuje, že je FORWARD zapnutý.

Kdybych to chtěl vrátit zpět, tak zadám příkaz.

ufw default deny FORWARD

Poslední, co jse mmusel udělat je vyřešit problém s Google Play certifikací. Dokud jsem neměl zprovozněnou síť, tak nebylo možné postupovat podle návodu, protože se mi nezobrazovalo číslo mého zařízení.

Ve stručnosti jsem spustil tyto příkazy:

sudo waydroid shell
:/ # 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\";"

A na výstupu příkazu se mi zobrazilo ID:

android_id|4251355776612572435

Číselné ID jsem zaregistroval na stránce Google. Instrukce ze stránky Google jsem nenásledoval, protože ID jsem měl už získané. Takže mi stačilo zadat ID a potvrdit registraci.

Poté bylo možné instalovat aplikace z Google Play. Pro jistotu jsem ale restartoval Waydroid.

sudo systemctl restart waydroid-container

Co čert nechtěl, tak zrovna aplikace, kterou jsem chtěl na Waydroidu používat havarovala - nebylo možné ji spustit. Další aplikace zase nebylo možné nainstalovat z Google Play (možná špatná verze Androidu - nezjišťoval jsem). Takže jsem nakonec Waydroid smazal podle návodu na reset Waydroid.

Dle dokumentace prochází Waydroid docela dynamickým vývojem, takže je možné, že za čas bude všechno jinak.

Odinstalace:

sudo systemctl stop waydroid-container.service
sudo rm -rf /var/lib/waydroid /home/.waydroid ~/waydroid ~/.share/waydroid ~/.local/share/applications/*aydroid* ~/.local/share/waydroid
rm /etc/apt/sources.list.d/waydroid.list
sudo apt --purge remove waydroid
sudo apt --purge autoremove

Spuštění Androidu ve virtutálním prostředí - například ve VirtualBoxu. Projekt Android-x86 také není nijak živě vyvíjen. Je tam starší verze Androidu. Ale říkal jsem si, že by mi mohla stačit.

Při instalaci jsem se díval více do manuálu a zjistil jsem, že bude určitě problém s instalací aplikací z Google Play. Bude nutné stáhnout instalační balíček aplikace, kterou chci a pak nainstalovat. Což nemusí být jednoduché a nezkoumal jsem, jestli to v prohlížeči jde zařídit, abych stáhl balíček z Google Play nebo budu muset hledat na stránkách výrobce.

A protože výrobce na stránkách balíček s aplikací nemá, tak se dostávám do dalších složitostí. Proto jsem instalaci ani nedokončil a od projektu jsem v tuto chvíli upustil.

Další volbou je zkusit vývojové prostředí Android Studio s emulátorem. Tady je důležité říct, že je to volba velmi náročná na volné místo na disku. Reálně tak počítat s 20GB místa.

snap install android-studio --classic

Při instalaci jsem narazil na to, že bude dobré zapnout hardwarovou virtualizaci.

<code bash> sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils sudo adduser mujuzivatel libvirt <code>

Doporučuji postupovat spíše podle návodu, protože je tam podrobnější info, jak ověřit, že procesor virtualizaci podporuje a jak případně zkontrolovat, že instalace proběhla v pořádku.

Po přidání uživatele do skupiny je dobré se přihlásit a odhlásit.

Když jsem se pokoušel spustit defaultně vytvořené zařízení po instalaci, tak se mi zobrazila chybová hláška:

<code bash> The emulator process for AVD Pixel_3a_API_34_extension_level_7_x86_64 has terminated. <code>

No chybová hláška mi moc nápovědy nedala. Pak jsem náhodou přišel při hledání na to, že mám nedostatek místa na disku. Měl jsem 2GB volného místa. A tady je potřeba počítat tak s 10 GB volného místa. Jakmile jsem místo uvolnil, vše nastartovalo jak mělo.

V defaultním zařízení jsem neměl nainstalovaný Google Play. Na internetu bylo vícero návodů, ve kterých bylo popsáno, jak Google Play doinstalovat. Nicméně byly to docela staré návody. Nakonec jsem našel jednodušší řešení. Stačilo vytvořit nové zařízení a vybat zařízení, které mělo ikonu ve sloupečku Play Store. V mém případě to bylo tedy zařízení Pixel 4.

A pak jsem vybral raději starší Android - Android 11.0.

A nic víc už jsem nemusel dělat. Jenom dokončit instalaci a Google Play byl již ve virtuálním zařízení nainstalovaný.

Maximálně když mi začal Google Play padat, tak jsem nějakou chvíli počkal. Docházelo totiž k aktualizaci a bohužel se Google Play choval takovým nešikovným způsobem.

Paradoxní je, že aplikace, která na mém fyzickém telefonu funguje, tak nefungovala ani v tomto virtuálním prostředí, ani ve Waydroidu. Nicméně ostatní aplikace fungovaly v pořádku.

Při odinstalaci smazat v domovském adresáři složku Android a poté je také v domovském adresáři ve skryté složce .android sloška ke smazání. Bude mít hodně GB. V mém případě jsem v ní měl uložen obraz pro zařízení Pixel 4.

  • it/google/android.txt
  • Poslední úprava: 2023/07/02 15:08
  • autor: Petr Nosek