bollwerk/.github/skills/android-emulator/SKILL.md
Jens Reinemann a9a999fd1e fix(skills): harden deploy scripts for GPU and timing issues
android-dev.ps1:
- Changed GPU mode from 'auto' to 'guest' (host/auto/swiftshader/angle
  all fail with 'OpenGL Core Profile not supported' on this machine)
- Added -no-snapshot-load flag (prevents corrupt snapshot issues)
- Increased PackageManager wait from 5s to 30s (PM needs ~30s after
  sys.boot_completed=1 before adb install succeeds)
- Replaced blocking 'adb wait-for-device' with polling loop (120s timeout)
- Improved emulator-stop with force-kill fallback for hung processes
- Simplified screenshot action: exec-out screencap instead of push/pull/rm
- Made all timing values configurable via variables at top of script

android-emulator SKILL.md:
- Updated manual start command to use -gpu guest
- Updated PM wait time reference from 5s to 30s
- Added known issue #3: OpenGL Core Profile not supported (documents
  symptoms, affected GPU modes, and workaround)
2026-05-13 22:16:11 +02:00

5.5 KiB
Raw Blame History

name description
android-emulator Android-Emulator starten, Apps installieren/starten, AVD verwalten, Logs lesen. Verwende diesen Skill für alles rund um den Android-Simulator: Starten, Stoppen, App-Deployment, Logcat, Screenshots. Trigger-Phrasen: 'Emulator', 'Simulator', 'AVD', 'virtuelles Gerät', 'Emulator starten', 'App im Simulator', 'logcat'.

Skill: Android Emulator

Verwaltet den Android-Emulator für die Krisenvorrat-App. Das Standard-AVD simuliert ein Samsung S24 Ultra.


Setup

Komponente Wert
Emulator C:\Users\JensR\AppData\Local\Android\Sdk\emulator\emulator.exe
ADB C:\Users\JensR\AppData\Local\Android\Sdk\platform-tools\adb.exe
AVD Manager C:\Users\JensR\AppData\Local\Android\Sdk\cmdline-tools\latest\bin\avdmanager.bat
AVD Name S24Ultra_API35
System Image system-images;android-35;google_apis;x86_64
Basisprofil pixel_7_pro (SDK-Hardwareprofil kein Samsung-Profil verfügbar, dieses Profil kommt dem S24 Ultra am nächsten: 6.7" QHD+)
Anpassungen 3120×1440, 560dpi, 4096 MB RAM (Emulator-Limit)

Operationen via Skript (bevorzugt)

# Emulator starten (wartet auf Boot)
& ".github/skills/android-build/android-dev.ps1" -Action emulator-start

# App bauen + auf Emulator installieren + starten
& ".github/skills/android-build/android-dev.ps1" -Action deploy-emulator

# Nur installieren (ohne Build)
& ".github/skills/android-build/android-dev.ps1" -Action install-emulator

# App starten (bereits installiert)
& ".github/skills/android-build/android-dev.ps1" -Action launch

# Emulator stoppen
& ".github/skills/android-build/android-dev.ps1" -Action emulator-stop

# Logcat (gefiltert auf App)
& ".github/skills/android-build/android-dev.ps1" -Action logcat

Manuelle Kommandos (Fallback)

Emulator starten

$env:ANDROID_HOME = "C:\Users\JensR\AppData\Local\Android\Sdk"
Start-Process "$env:ANDROID_HOME\emulator\emulator.exe" -ArgumentList "-avd S24Ultra_API35 -gpu guest -no-snapshot-load"

Auf Boot warten

$adb = "$env:ANDROID_HOME\platform-tools\adb.exe"
& $adb wait-for-device
do {
    Start-Sleep -Seconds 5
    $boot = & $adb shell getprop sys.boot_completed 2>$null
} while ($boot -ne "1")

Hinweis: Der Boot dauert 3090 Sekunden. sys.boot_completed gibt zunächst leeren String zurück.

App installieren

& $adb install -r "app\build\outputs\apk\debug\app-debug.apk"

-r = Replace (Reinstall ohne Datenverlust).

App starten

& $adb shell am start -n de.krisenvorrat.app/.MainActivity

App stoppen

& $adb shell am force-stop de.krisenvorrat.app

Logcat (gefiltert)

& $adb logcat --pid=$(& $adb shell pidof de.krisenvorrat.app) -v time

Screenshot

& $adb exec-out screencap -p > tmp/screenshot.png

Emulator beenden

& $adb emu kill

Bekannte Probleme

1. NullPointerException bei Install direkt nach Boot

Der PackageManager ist noch nicht bereit, obwohl sys.boot_completed bereits 1 ist.

Lösung: 30 Sekunden nach boot_completed=1 warten, dann installieren. Das Skript macht dies automatisch.

2. Emulator startet nicht (HAXM / Hypervisor-Fehler)

WHPX nicht verfügbar → Hyper-V muss aktiviert sein

Auf Windows: Hyper-V muss in Windows Features aktiviert sein. Der Emulator nutzt WHPX (Windows Hypervisor Platform).

3. OpenGL Core Profile nicht unterstützt (GPU-Problem)

Diese Maschine (NVIDIA GeForce MX130 / Intel UHD 620) unterstützt kein OpenGL Core Profile. Mit -gpu auto, -gpu host, -gpu swiftshader_indirect oder -gpu angle_indirect startet der Emulator-Prozess, zeigt aber kein Fenster und bindet keine ADB-Ports.

Symptom: qemu-system-x86_64 läuft, aber adb devices zeigt keinen Emulator.

Lösung: Immer -gpu guest verwenden (Software-Rendering im Gast-VM). Das android-dev.ps1-Skript setzt dies automatisch über $GPU_MODE = "guest".

4. Emulator-Fenster reagiert nicht

# Hard-Kill und Neustart
& $adb emu kill
Start-Sleep -Seconds 5
# Erneut starten

AVD-Verwaltung

Vorhandene AVDs auflisten

& "$env:ANDROID_HOME\cmdline-tools\latest\bin\avdmanager.bat" list avd

AVD löschen

& "$env:ANDROID_HOME\cmdline-tools\latest\bin\avdmanager.bat" delete avd -n "AVD_NAME"

Neues AVD erstellen (S24 Ultra Approximation)

Das SDK enthält kein Samsung-Profil. pixel_7_pro ist das nächstliegende Hardwareprofil (6.7" QHD+). Display und RAM werden über config.ini auf S24-Ultra-Werte angepasst.

echo "no" | & "$env:ANDROID_HOME\cmdline-tools\latest\bin\avdmanager.bat" create avd `
    -n "S24Ultra_API35" `
    -k "system-images;android-35;google_apis;x86_64" `
    -d "pixel_7_pro"