android-emulator SKILL.md: - Added hot-reload and screenshot.ps1 to operations section - Replaced broken 'exec-out > file' screenshot command with screenshot.ps1 reference and UTF-16 corruption warning - Replaced blocking 'adb wait-for-device' with polling loop + timeout (consistent with android-dev.ps1 implementation) - Added 30s PackageManager wait note after boot android-build SKILL.md: - Added screenshot.ps1 section with usage examples - Documented PowerShell binary redirect UTF-16 bug as known issue Motivation: docs diverged from scripts after GPU-mode, PM-wait, screenshot.ps1 and hot-reload changes were added to the scripts.
6.4 KiB
| 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 + PackageManager)
& ".github/skills/android-build/android-dev.ps1" -Action emulator-start
# App bauen + auf Emulator installieren + starten (Kaltstart)
& ".github/skills/android-build/android-dev.ps1" -Action deploy-emulator
# Hot Reload: Build + Install + Relaunch auf laufendem Emulator (ohne Neustart)
& ".github/skills/android-build/android-dev.ps1" -Action hot-reload
# 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
# Screenshot (eigenes Skript mit PNG-Validierung)
& ".github/skills/android-build/screenshot.ps1"
& ".github/skills/android-build/screenshot.ps1" -UiDump # mit Text-Extraktion
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"
$elapsed = 0
do {
Start-Sleep -Seconds 5
$elapsed += 5
$boot = & $adb -e shell getprop sys.boot_completed 2>$null
} while ($boot -ne "1" -and $elapsed -lt 300)
# Danach 30s auf PackageManager warten!
Start-Sleep -Seconds 30
Hinweis: Der Boot dauert 30–90 Sekunden. Danach braucht der PackageManager weitere ~30s bevor adb install funktioniert. Das Skript behandelt beides automatisch.
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
# Robustes Skript (empfohlen – validiert PNG, umgeht PowerShell-Encoding-Bug)
& ".github/skills/android-build/screenshot.ps1"
& ".github/skills/android-build/screenshot.ps1" -UiDump # zusätzlich sichtbare Texte ausgeben
Wichtig: adb exec-out screencap -p > file.png funktioniert in PowerShell NICHT korrekt –
PowerShell konvertiert Binärdaten in UTF-16 und korrumpiert den PNG-Header. Immer screenshot.ps1 verwenden.
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"