ubuntuusers.de

Anbox

Dieser Artikel bezieht sich auf Ubuntu Touch, die Variante von Ubuntu für mobile Geräte mit Touchscreen.

Getestet wurde der Artikel für folgende Version(en):

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Achtung!

Für jegliche Veränderungen an Ubuntu Touch ist der Besitzer selbst verantwortlich. Weder die Artikelautoren noch ubuntuusers.de haften, falls Probleme auftreten oder das benutzte Gerät im schlimmsten Fall nie mehr gestartet werden kann. Tiefe Systemeingriffe können dazu führen, dass Ubuntu Touch durch einen sogenannten Flashvorgang neu aufgespielt werden muss.

Unter bestimmten Umständen könnte auch dies unmöglich werden - das Gerät und damit auch die Daten sind dann unwiederbringlich zerstört. Schwere Systemeingriffe wie Schreibzugriff auf das System sind inoffiziell, können beispielsweise im Fall der Nutzung von apt-get ggf. zu Problemen führen und sind allgemein häufig von Garantieleistungen der Gerätehersteller/Shops ausgenommen.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

./Anbox_logo.png Anbox 🇬🇧 ist ein minimalistischer Android-Container mit Kompatibilitäts-Schicht, der es erlaubt, Android-Apps auf GNU/Linux-Systemen wie UBports einzusetzen. Verwendet wird hier eine modifizierte Android-7.1.1-Version, die allerdings keinen vollständigen Zugriff auf die Geräte-Bestandteile hat. So kann zwar das Netzwerk verwendet werden, nicht aber GPS oder Kamera etc. Allerdings kann die Soundausgabe von einigen Apps verwendet werden. Es lassen sich aber bei Weitem nicht alle Apps nutzen.

Für einige der unterstützten Ubuntu-Touch-Geräte[1] existieren Boot-Partitions-Images, die anstelle der "regulären" Boot-Partitionen eingesetzt werden. Anbox muss daher nach jedem Update des Systems (neue OTA, Wechsel des Installations-Kanals o.ä.) neu installiert werden; die bereits installierten Android-Programme bleiben dann allerdings erhalten.

Gewöhnungsbedürftig ist, dass es auf den Ubuntu-Touch-Geräten keinen "Zurück"-Button gibt, sodass ggf. eine App beendet und neu gestartet werden muss, statt in ihr auf einen vorherigen Bildschirm zurückgehen zu können. Eine zufriedenstellende Lösung ist derzeit leider nicht in Sicht. Die verwendbaren Apps reagieren oft zäh und nach Berühren recht zeitverzögert. Wenn eine App gar nicht starten möchte, weil Anbox "hängengeblieben" ist, hilft es ggf. nur, das Gerät neu zu starten. Für den Produktivbetrieb ist Anbox derzeit also noch nicht wirklich zu empfehlen.

Hinweis:

Anbox kann auch auf Desktop-Rechnern verwendet werden, die Installation unterscheidet sich aber erheblich; derzeit sind dafür nur snap-Pakete vorhanden, die sich auf Ubuntu-Touch-Geräten nicht einsetzen lassen!

Voraussetzungen

Das Ubuntu-Touch-Gerät muss unter 16.04 laufen (Anbox funktioniert auf 15.04 nicht!). Zur Installation kommen adb[2] und fastboot[3] zum Einsatz. Es sollte vor Installation sicherheitshalber ein Backup erstellt werden. Auf dem Ubuntu-Touch-Gerät muss der Entwicklermodus aktiviert sein, diesen in den "Systemeinstellungen → Info → Entwicklermodus" aktivieren.

Unterstützte Geräte

Anbox kann derzeit (März 2020) auf folgenden Geräten installiert werden:

  • Meizu Pro 5 (Codename: turbo, Name der Boot-Partition: bootimg)

  • Fairphone 2 (Codename: FP2, Name der Boot-Partition: boot)

  • OnePlus One (Codename: bacon, Name der Boot-Partition: boot)

  • Nexus 5 (Codename: hammerhead, Name der Boot-Partition: boot)

  • BQ M10 FHD (Codename: frieza, Name der Boot-Partition: boot)

Für das auf UBports 🇬🇧 ebenfalls angegebene Gerät BQ M10 HD (Codename: cooler, Name der Boot-Partition: boot) funktioniert das momentan (Stand März 2020) leider nicht, eine Lösung ist derzeit nicht in Sicht (siehe Issue auf github 🇬🇧 und Foren-Thread), ggf. gilt das auch für die FHD-Version des Gerätes.

Installation

Zur Installation benötigt man Codenamen und den Namen der Boot-Partition des Ubuntu-Touch-Gerätes. Die Werte exportiert man sich im Terminal[4] (hier für ein Fairphone 2), damit es beim Herunterladen keine Fehler gibt:

export CODENAME="FP2" && export PARTITIONNAME="boot" 

Dann wird das Boot-Image heruntergeladen, das über USB-Kabel an einen Rechner angeschlossene Gerät via adb-Shell in den Bootloader gestartet und mit fastboot das Image geflasht[5]:

wget http://cdimage.ubports.com/anbox-images/anbox-boot-$CODENAME.img
adb shell
sudo reboot -f bootloader # Boot-Loader-Modus, am Fairphone 2 sollte die LED blau leuchten
sudo fastboot flash $PARTITIONNAME anbox-boot-$CODENAME.img 

Ausgabe ist etwas wie

target reported max download size of 536870912 bytes
sending 'boot' (12252 KB)...
OKAY [  0.385s]
writing 'boot'...
OKAY [  0.290s]
finished. total time: 0.675s

Danach wird das Gerät neu gestartet:

sudo fastboot reboot # Gerät startet in den normalen Modus
rm anbox-boot-$CODENAME.img # Aufräumen 

Hinweis:

Ab diesem Schritt können die weiteren Befehle über abd shell, SSH oder die Terminal-App auf dem Ubuntu-Touch-Gerät ausgeführt werden.

Nachdem das Ubuntu-Touch-Gerät wieder hochgefahren ist, folgende Befehle ausführen:

sudo mount -o rw,remount /
sudo apt update
sudo apt install anbox-ubuntu-touch 

Ausgabe danach etwas wie:

The following NEW packages will be installed:
  anbox anbox-common anbox-ubuntu-touch libsdl2-2.0-0 libsdl2-image-2.0-0
  libsndio6.1

Wenn man nicht benötigte Pakete für nicht genutzte Sprachen deinstalliert hat, können Warnungen wie folgende auftauchen, die aber auf die Funktion keinen Einfluss haben:

dpkg: warning: files list file for package 'ubuntu-keyboard-french' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'language-pack-touch-zh-hant' missing; assuming package has no files currently installed

Anschließend die Installation abschließen mit

anbox-tool install 

Der Befehl zieht das benötigte android.img auf das Gerät, das in /home/phablet/anbox-data abgelegt wird (Größe etwa 220 MB, darf keinesfalls, z.B. im Zuge von Speicheroptimierungsmaßnahmen, gelöschten werden!) Bei Neuinstallation z.B. nach Update des Systems ist der Befehl nicht nötig, ein anbox-tool upgrade holt die aktuelle Version. Danach, wenn Anbox nicht initialisiert werden sollte

anbox-tool disable 
anbox-tool enable 

Ggf. muss aber auch das Gerät neu gestartet werden.

Standardmäßig sind dann einige Android-System-Apps (Einstellungen, Android-Tastatur, Dateien, Galerie, Uhr, Kalender, Musik, Rechner, Email, WebViewShell) vorhanden, die man allerdings bis auf die ersten drei am besten umgehend deaktivieren sollte; der Versuch, beispielsweise die Galerie zu verwenden führt fast unweigerlich zu Anbox-Abstürzen.

Installation neuer APKs

Die zu installierenden .apk-Dateien in das Verzeichnis /home/phablet/Downloads kopieren, danach folgende Befehle ausführen:

sudo mount -o rw,remount / # Systempartition beschreibbar machen
sudo apt update # Paketlisten aktualisieren
sudo apt install android-tools-adb # nur vor der erstem Installation nötig
adb install /home/phablet/Downloads/MEINE-APP.apk # adb auf dem Touch-Gerät, nicht dem Rechner!
exit 

Ggf. muss die Ansicht im App-Scope aktualisiert werden, indem man von der Mitte des Bildschirms nach unten wischt und dann loslässt, um neu installierte Android-Apps sichtbar zu machen (bis OTA 11). In neueren Versionen existiert kein "App Scope" mehr, die Programme werden im "App Drawer" angezeigt und sollten dort automatisch erscheinen. Manchmal tauchen auch zwei Icons auf; die Desktop- und Icon-Dateien liegen dann an zwei Orten vor (in /home/phablet/.local/share/applications, sowie im Unterordner .../anbox). Die Eintrags-Paare im ersten Verzeichnis kann man löschen, das zweite wird von Anbox wieder angelegt, wenn man es entfernt. Zeitweise verschwinden die überzähligen Icons aber auch nach Neustart des Gerätes wieder.

Apps aktuell halten

Mit F-Droid 🇬🇧 kann ein Open-Source-Softwarestore installiert werden, eine aktuelle Version läuft z.B. auf einem Fairphone 2 mit Ubuntu-Touch-Version 659 ("Kanal edge"). Nach einen Anbox-Neuinstallierung nach Update musste allerdings die App zunächst deinstalliert und dann neu aufgespielt werden. Der Google Playstore ist allerdings nicht direkt nutzbar; Aktualisierungen lassen sich für etliche Apps also ggf. nur über Umwege erhalten.

Apps deinstallieren

Android-Apps werden mit dem Befehl adb uninstall [APP_ID] vom Ubuntu-Touch-Gerät aus deinstalliert:

sudo mount -o rw,remount /
adb uninstall [APP_ID] # adb auf dem Gerät, nicht dem Rechner!
exit 

Die APP_ID der installierten Apps kann man auf dem Gerät mit

anbox-tool app-list 

anzeigen lassen. Ausgegeben werden auch "systemimmanente" Apps, wenn sie nicht deaktiviert sind; Beispielausgabe wäre:

Dateien (com.android.documentsui)
Kontakte (com.android.contacts)
Threema (ch.threema.app)
F-Droid (org.fdroid.fdroid)
Öffi (de.schildbach.oeffi)
Terminal Emulator (jackpal.androidterm)
Einstellungen (com.android.settings)
TV-Browser (org.tvbrowser.tvbrowser)
Dateimanager (com.simplemobiletools.filemanager.pro)

Dia Angaben in den Klammern sind die APP_IDs, die man zum Deinstallieren benötigt (die com.android.*-Apps lassen sich allerdings nicht deinstallieren).

Einfacher ist es, die Apps auf dem "üblichen" Weg über die Android-"Einstellungen → Apps → APP-NAME → Deinstallieren" zu entfernen.

Anbox deinstallieren

Eine direkte Deinstallation ist nicht ohne Weiteres möglich, da Grundlage ein "gepatchtes" Boot-Image ist. Mit anbox-tool disable|enable kann die Nutzung verhindert oder wieder ermöglicht werden. Um Anbox vollständig zu entfernen sollten zunächst alle zusätzlich installierten Apps deinstalliert werden. Dann kann man das Gerät z.B. via UBports-Installer neu flashen, wobei allerdings tunlichts darauf zu achten ist, die eigenen Daten nicht zu löschen, also keinen kompletten "wipe" durchführen zu lassen! Trotzdem ist eine eine vorherige Datensicherung immer der sicherere Weg, falls etwas schief gehen sollte.

Tipps und Tricks

Anbox via Terminal deaktivieren

Leider verbraucht Anbox, auch wenn es nicht genutzt wird, einiges an Batterieleistung. Via Terminal lässt sich Anbox mit dem Befehl

anbox-tool disable|enable 

temporär deaktivieren und wieder nutzbar machen. Der Befehl benötigt allerdings Rootrechte, nach der Eingabe erfolgt ein Passwortabfrage. Kontrollieren lässt sich das mit

anbox-tool status 

Wenn die Ausgabe so aussieht

Kernel: OK
System: OK
Enabled: YES
Running: YES

ist alles in Ordnung, und Anbox sollte laufen.

Wenn die Ausgabe allerdings so aussieht:

Kernel: OK
System: OK
Enabled: YES
Running: NO

stimmt etwas nicht. Wenn dann auch ein De- und Neuaktivieren keine Besserung bringt, hilft es nur, das Gerät neu zu starten.

Automatisches Umschalten per Icon

Einfacher ist es, Anbox per Skript, das über ein Icon gestartet wird, an- und auszuschalten. Das Skript liest den Status aus, und schaltet dann je nach Ergebnis um, und sorgt dafür, das auch das Icon seine Farbe wechselt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/bin/bash
anboxtool=($(anbox-tool status)) 
atenabled=${anboxtool[5]}

if [ "$atenabled" == "YES" ]; then
      anbox-tool disable
	mv /home/phablet/Downloads/anboxtoggleRED.desktop /home/phablet/.local/share/applications/anboxtoggleRED.desktop
	mv /home/phablet/.local/share/applications/anboxtoggleGREEN.desktop /home/phablet/Downloads/anboxtoggleGREEN.desktop 
else
      anbox-tool enable
	mv /home/phablet/Downloads/anboxtoggleGREEN.desktop /home/phablet/.local/share/applications/anboxtoggleGREEN.desktop
	mv /home/phablet/.local/share/applications/anboxtoggleRED.desktop /home/phablet/Downloads/anboxtoggleRED.desktop 
fi

Das Skript als anboxtoggle.sh abspeichern und ausführbar machen. Außerdem werden zwei Icons in verschiedenen Farben benötigt (dazu z.B. das Logo hier aus dem Artikel anbox_logo.png ⮷ herunterladen, in GIMP o.ä. die Farben anpassen, die Dateien dann unter anboxtoggleRED.png resp. anboxtoogleGREEN.png abspeichern), sowie zwei .desktop-Datei, die durch Icon im "App Drawer" über das Skript bedient werden:

1
2
3
4
5
6
7
8
9
[Desktop Entry]
Name=Anboxtoggle
Type=Application
Terminal=false
Icon=/home/phablet/.local/share/applications/anboxtoggleRED.png
Categories=Utility
Comment=Switch between anbox enabled and disabled
X-Ubuntu-Touch=true
Exec=/home/phablet/.local/share/applications/anboxtoggle.sh 

Eine wird als anboxtoggleRED.desktop abgespeichert, die andere (nur in Zeile 5 den Logo-Namen auf anboxtoggleGREEN.png ändern) als anboxtoggleGREEN.desktop, diese ausführbar machen. Das Skript, die Bilder und eine der .desktop-Dateien auf dem Gerät in /home/phablet/.local/share/applications abspeichern, die zweite .desktop-Datei in /home/phablet/Downloads. Wenn Anbox gerade läuft, muss anboxtoggleGREEN.desktop nach .../applications, wenn nicht, anboxtoggleRED.desktop. Das Icon erscheint spätestens nach einem Neustart von Unity8, per Touch lässt sich Anbox jetzt bei Bedarf ein- und wieder ausschalten. An der Farbe des Logos erkennt man den aktuellen Status. (Siehe auch diesen Thread im Forum, mit besten Dank an user_unknown).

Probleme und Lösungen

Zu wenig Speicherplatz

Wenn das Installieren von anbox-ubuntu-touch oder android-tools-adb wegen mangelndem Speicherplatz scheitert, kann folgendes Vorgehen helfen:

sudo mount -o rw,remount /
sudo rm -r /var/cache/apt       # löscht den apt-Cache; gibt Platz auf der System-Partition frei
sudo tune2fs -m 0.2 /dev/loop0  # Speicher, der auf der System-Partition speziell für den root-Benutzer reserviert ist, auf 0,2 % setzen
sudo apt update                 # apt-Cache erneuern, um Anbox und adb installieren zu können
sudo apt install anbox-ubuntu-touch android-tools-adb
sudo mount -o ro,remount /
exit 

Zugriff auf Anbox-Daten

Die in nicht gerooteten Android-Versionen sonst frei zugänglichen Android-Dateien werden unter im Verzeichnis /home/phablet/anbox-data/data/media/0/* gespeichert. Der direkte Zugriff, selbst das Auflisten der Dateien auf /media/0/ ist allerdings nur als root-Benutzer (Befehl sudo -i) über adb shell/SSH, nicht aber über den Dateimanager von Ubuntu Touch oder Nautilus/Nemo möglich. Um Daten zu importieren, muss man sie daher quasi "blind" in den Container kopieren. Um z.B. ein Logo in den Android-Standard-Ordner für Bilder (Pictures) zu schieben, wird es zunächst in einen Ordner auf dem Ubuntu-Touch-Gerät gespeichert, und von dort mit

sudo cp Anbox_logo.png /home/phablet/anbox-data/data/media/0/Pictures 

in den Anbox-Container kopiert - der Ziel-Ordner muss dafür existieren. Mit einem in Anbox installierten Dateimanager sind die Daten dort intern sicht- und bearbeitbar, wenn sie mit entsprechenden Rechten versehen sind (siehe auch diesen Tread 🇬🇧 im Fairphone-Forum).

Ein anderer Weg besteht darin, Daten an eine in Anbox installierte Messenger-App zu schicken (getestet mit Threema), so lassen sich z.B. auch APKs direkt in den Container verfrachten und dort direkt installieren.

Fehlermeldung "Invalid APK file"

Falls beim Installieren einer APK-Datei der Fehler Invalid APK file ausgegeben wird, kann es auch bedeuten, dass die Datei nicht gefunden wurde. Daher zunächst die Schreibweise überprüfen und ggf. auch den kompletten Pfad zur Datei angeben.

Icons erscheinen mehrfach

Aus nicht geklärter Ursache erscheine zur Zeit (März 2020) die App-Icons für über Anbox installerte Anwendungen regelmäßig mehrfach im "App Scope/App Drawer", insbesondere wenn Anbox deaktiviert und dann wieder aktiviert wurde. Verhindert lässt sich das nicht, es kann aber über einen Neustart von Unity8 (über das "UT Tweak Tool → System → Dienste" temporär behoben werden.

Drehung funktioniert nicht

Leider funktioniert die Automatische Drehung des Bildschirminhaltes nicht richtig. Die Anzeige ist fürs Hochformat angelegt, sie dreht sich zwar, aber füllt dann nicht den ganzen Bildschirm aus, sondern ist unten abgeschnitten. Eine Lösung ist derzeit anscheinend nicht bekannt.

intern

extern

Diese Revision wurde am 19. März 2020 12:45 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Emulation und Virtualisierung, Ubuntu Phone, Android, Ubuntu Touch