--- name: android-emulator description: "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 Bollwerk-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) ```powershell # 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 ```powershell $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 ```powershell $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 ```powershell & $adb install -r "app\build\outputs\apk\debug\app-debug.apk" ``` `-r` = Replace (Reinstall ohne Datenverlust). ### App starten ```powershell & $adb shell am start -n de.bollwerk.app/.MainActivity ``` ### App stoppen ```powershell & $adb shell am force-stop de.bollwerk.app ``` ### Logcat (gefiltert) ```powershell & $adb logcat --pid=$(& $adb shell pidof de.bollwerk.app) -v time ``` ### Screenshot ```powershell # 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 ```powershell & $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 ```powershell # Hard-Kill und Neustart & $adb emu kill Start-Sleep -Seconds 5 # Erneut starten ``` --- ## AVD-Verwaltung ### Vorhandene AVDs auflisten ```powershell & "$env:ANDROID_HOME\cmdline-tools\latest\bin\avdmanager.bat" list avd ``` ### AVD löschen ```powershell & "$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. ```powershell 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" ```