bollwerk/.github/skills/android-emulator/SKILL.md
Jens Reinemann a5f89e6a69 rename: Krisenvorrat -> Bollwerk
- Package: de.krisenvorrat.* -> de.bollwerk.*
- Klassen: KrisenvorratApp/Database/Theme -> Bollwerk*
- ApplicationId: de.bollwerk.app
- Server: BOLLWERK_* Env-Vars, bollwerk HOCON-Config
- Docker: bollwerk-server/db/backup Container-Namen
- Room DB: bollwerk.db, SharedPrefs: bollwerk_secure_prefs
- Export-Dateien: bollwerk_export/inventar
- UI-Strings, HTML, Admin-UI: alle auf Bollwerk
- Docs, Skills, README angepasst
- Alle Tests gruen, Build erfolgreich
2026-05-17 17:44:02 +02:00

189 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 3090 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"
```