Ausführen eines virtuellen /e/OS-Geräts im Android Emulator
Installieren Sie ein /e/OS-Systemabbild und führen Sie es mit dem Android Emulator aus.

Java installieren

Die Kommandozeilen-Tools des Android SDK benötigen Java. Installieren Sie eine Java-Laufzeitumgebung, bevor Sie sdkmanager oder avdmanager ausführen.

Unter Ubuntu:

sudo apt install openjdk-17-jre-headless

Unter Fedora:

sudo dnf install java-17-openjdk

Prüfen Sie, ob Java verfügbar ist:

java -version

Android SDK-Tools installieren

Diese Anleitung verwendet die Android SDK Command-Line Tools, damit jeder Befehl auf dasselbe SDK-Verzeichnis zugreift. Android Studio ist nicht erforderlich.

Laden Sie die ZIP-Datei der Linux-Kommandozeilen-Tools von der Android-Studio-Downloadseite herunter und installieren Sie sie unter cmdline-tools/latest in Ihrem Android-SDK-Verzeichnis:

export ANDROID_HOME="${HOME}/Android/Sdk"
mkdir -p "${ANDROID_HOME}/cmdline-tools"
SDK_TOOLS_TMP="$(mktemp -d)"
unzip /path/to/commandlinetools-linux-….zip -d "${SDK_TOOLS_TMP}"
mv "${SDK_TOOLS_TMP}/cmdline-tools" "${ANDROID_HOME}/cmdline-tools/latest"

Fügen Sie die SDK-Tools zu Ihrem PATH hinzu:

export PATH="${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/emulator:${ANDROID_HOME}/platform-tools:${PATH}"

Installieren Sie Android Emulator und Platform-Tools in dasselbe SDK-Verzeichnis:

sdkmanager --sdk_root="${ANDROID_HOME}" --install "emulator" "platform-tools"

Akzeptieren Sie die Lizenzabfragen des Android SDK, falls sdkmanager um Bestätigung bittet.

Prüfen Sie, ob die benötigten Befehle verfügbar sind:

command -v sdkmanager avdmanager emulator adb
java -version
emulator -accel-check

Das Image herunterladen und verifizieren

Laden Sie ein Emulator-Image und die zugehörige .sha256sum-Datei vom /e/OS-Image-Server herunter, oder erstellen Sie ein Image mit IS_EMULATOR=true.

Bewahren Sie das ZIP-Archiv und die Prüfsummendatei in einem temporären Download-Verzeichnis auf. Das Archiv wird im nächsten Schritt in Ihr Android SDK entpackt.

Verifizieren Sie das Archiv aus dem Verzeichnis, in das Sie es heruntergeladen haben:

sha256sum --check IMG-e-….zip.sha256sum

Die Prüfsumme erkennt einen beschädigten Download. Da Prüfsumme und Archiv vom selben Server bereitgestellt werden, stellt diese Prüfung nicht die Identität des Herausgebers sicher.

Untersuchen Sie weiterhin im Download-Verzeichnis die source.properties-Datei, die in der ZIP-Datei gespeichert ist, bevor Sie sie entpacken:

unzip -p IMG-e-….zip '*/source.properties'

Dieser Befehl gibt die Metadatendatei aus, ohne das Archiv zu entpacken. Das Muster */source.properties passt auf die Metadatendatei im ABI-Verzeichnis innerhalb der ZIP-Datei. Verwenden Sie die ausgegebenen Werte, um im nächsten Schritt den Installationspfad zu wählen. Zum Beispiel meldet ein Android 16 x86_64-Image API- Level 36, den Tag lineage und die ABI x86_64.

Das Systemabbild installieren

Entpacken Sie das Image aus Ihrem Download-Verzeichnis in den System-Image-Baum des Android SDK. Das Ziel befindet sich innerhalb von ANDROID_HOME, nicht im temporären Download-Verzeichnis:

cd /path/to/downloads
mkdir -p "${ANDROID_HOME}/system-images/android-36/lineage"
unzip IMG-e-….zip \
  -d "${ANDROID_HOME}/system-images/android-36/lineage"

Die ZIP-Datei enthält bereits das ABI-Verzeichnis. Nach dem Entpacken muss das installierte Image für Ihren Benutzer schreibbar sein und folgende Struktur haben:

${ANDROID_HOME}/system-images/android-36/lineage/x86_64/

Verlinken Sie nicht direkt auf Build-Ausgaben, die root oder einem anderen Benutzer gehören.

Erstellen Sie die Metadatendatei des Android-SDK-Pakets:

cat > "${ANDROID_HOME}/system-images/android-36/lineage/x86_64/package.xml" <<'EOF'
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:repository xmlns:ns2="http://schemas.android.com/repository/android/common/02" xmlns:ns12="http://schemas.android.com/sdk/android/repo/sys-img2/03">
  <localPackage path="system-images;android-36;lineage;x86_64" obsolete="false">
    <type-details xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns12:sysImgDetailsType">
      <api-level>36</api-level>
      <base-extension>true</base-extension>
      <tag>
        <id>lineage</id>
        <display>LineageOS</display>
      </tag>
      <abi>x86_64</abi>
    </type-details>
    <revision>
      <major>1</major>
    </revision>
    <display-name>LineageOS x86_64 System Image</display-name>
  </localPackage>
</ns2:repository>
EOF

Bestätigen Sie, dass das Image erkannt wird:

sdkmanager --sdk_root="${ANDROID_HOME}" --list_installed

Das Image-Verzeichnis enthält Dateien wie:

ls "${ANDROID_HOME}/system-images/android-36/lineage/x86_64"
advancedFeatures.ini  build.prop  data  encryptionkey.img  kernel-ranchu  NOTICE.txt  package.xml  ramdisk.img  source.properties  system.img  vendor.img  VerifiedBootParams.textproto

Der Emulator erstellt das beschreibbare Nutzerdaten-Image beim Start des virtuellen Geräts; es ist nicht Teil des heruntergeladenen System-Image-Archivs.

Ein virtuelles Gerät erstellen und starten

So verwenden Sie Android Studio:

  1. Öffnen Sie More Actions > Virtual Device Manager vom Willkommensbildschirm aus, oder View > Tool Windows > Device Manager aus einem Projekt.
  2. Klicken Sie auf Create Virtual Device.
  3. Wählen Sie ein Telefon-Hardwareprofil und klicken Sie auf Next.
  4. Wählen Sie das LineageOS x86_64-Image für API 36 und klicken Sie auf Next.
  5. Benennen Sie das virtuelle Gerät und klicken Sie auf Finish.
  6. Starten Sie es aus dem Device Manager.

Sie können das virtuelle Gerät auch über ein Terminal erstellen. Die Antwort echo "no" behält das Standard-Hardwareprofil bei, anstatt eine interaktive Abfrage zu öffnen:

echo "no" | avdmanager create avd \
  --name eos_a16 \
  --package 'system-images;android-36;lineage;x86_64'
emulator -list-avds

Starten Sie das virtuelle Gerät:

emulator -avd eos_a16 -no-snapshot-load

Für einen Headless-Kaltstarttest:

emulator -avd eos_a16 \
  -no-window -no-audio -no-snapshot -wipe-data \
  -gpu host -feature -Vulkan &
adb wait-for-device
adb shell getprop sys.boot_completed

Ein abgeschlossener Boot-Vorgang gibt 1 aus.

Ein bestehendes virtuelles Gerät löschen

Warnung: Bitte gehen Sie mit äußerster Vorsicht vor.

Listen Sie die virtuellen Geräte auf und löschen Sie das virtuelle Gerät namens eos_a16

emulator -list-avds
avdmanager delete avd -n eos_a16

Prüfen Sie, ob das virtuelle Gerät gelöscht wurde:

emulator -list-avds

Grafikabstürze beheben

Wenn der Emulator-Prozess in einem RenderThread innerhalb von SwiftShader oder SwANGLE abstürzt, oder wenn ein Headless-Boot vor sys.boot_completed=1 stecken bleibt, aktualisieren Sie zunächst den Android Emulator. Versuchen Sie es auf einem Host mit unterstützter GPU erneut mit deaktiviertem Hardware-OpenGL und Vulkan:

emulator -avd eos_a16 \
  -gpu host -feature -Vulkan

Diese Kombination umgeht den Software-Renderer. Hardware-Rendering hängt von der Host-GPU und dem Treiber ab; es ist eine Fehlerbehebungsoption, kein portabler Standardwert. Die in älteren Anleitungen zu findenden GPU-Modi swiftshader_indirect und guest sind veraltet.

Warnung: Diese inoffiziellen Emulator-Images sind userdebug-Builds, die mit Testschlüsseln signiert sind. Verwenden Sie im virtuellen Gerät keine echten Konten oder sensiblen persönlichen Daten.