/e/OS-Emulator
Bearbeiten
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:
- Öffnen Sie More Actions > Virtual Device Manager vom Willkommensbildschirm aus, oder View > Tool Windows > Device Manager aus einem Projekt.
- Klicken Sie auf Create Virtual Device.
- Wählen Sie ein Telefon-Hardwareprofil und klicken Sie auf Next.
- Wählen Sie das LineageOS x86_64-Image für API 36 und klicken Sie auf Next.
- Benennen Sie das virtuelle Gerät und klicken Sie auf Finish.
- 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
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.