diff --git a/.github/skills/android-build/SKILL.md b/.github/skills/android-build/SKILL.md index 5344776..b47d8b3 100644 --- a/.github/skills/android-build/SKILL.md +++ b/.github/skills/android-build/SKILL.md @@ -41,6 +41,21 @@ Verwende **immer** das `android-dev.ps1`-Skript statt roher Gradle-Aufrufe: & ".github/skills/android-build/android-dev.ps1" -Action hot-reload ``` +### Screenshot + +Screenshots sind ein eigenständiges Skript (nicht Teil von `android-dev.ps1`): + +```powershell +# Screenshot mit PNG-Validierung +& ".github/skills/android-build/screenshot.ps1" + +# Screenshot + sichtbare UI-Texte extrahieren +& ".github/skills/android-build/screenshot.ps1" -UiDump +``` + +**Wichtig:** Niemals `adb exec-out screencap -p > file.png` in PowerShell verwenden – +PowerShell konvertiert Binärdaten in UTF-16 und zerstört den PNG-Header. + ### Direkter Gradle-Aufruf (Fallback) Falls das Skript nicht verfügbar ist: diff --git a/.github/skills/android-emulator/SKILL.md b/.github/skills/android-emulator/SKILL.md index 7da9976..5bc3b7b 100644 --- a/.github/skills/android-emulator/SKILL.md +++ b/.github/skills/android-emulator/SKILL.md @@ -26,12 +26,15 @@ Verwaltet den Android-Emulator für die Krisenvorrat-App. Das Standard-AVD simul ## Operationen via Skript (bevorzugt) ```powershell -# Emulator starten (wartet auf Boot) +# Emulator starten (wartet auf Boot + PackageManager) & ".github/skills/android-build/android-dev.ps1" -Action emulator-start -# App bauen + auf Emulator installieren + starten +# 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 @@ -43,6 +46,10 @@ Verwaltet den Android-Emulator für die Krisenvorrat-App. Das Standard-AVD simul # 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 ``` --- @@ -60,14 +67,17 @@ Start-Process "$env:ANDROID_HOME\emulator\emulator.exe" -ArgumentList "-avd S24U ```powershell $adb = "$env:ANDROID_HOME\platform-tools\adb.exe" -& $adb wait-for-device +$elapsed = 0 do { Start-Sleep -Seconds 5 - $boot = & $adb shell getprop sys.boot_completed 2>$null -} while ($boot -ne "1") + $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. `sys.boot_completed` gibt zunächst leeren String zurück. +**Hinweis:** Der Boot dauert 30–90 Sekunden. Danach braucht der PackageManager weitere ~30s bevor `adb install` funktioniert. Das Skript behandelt beides automatisch. ### App installieren @@ -98,9 +108,14 @@ do { ### Screenshot ```powershell -& $adb exec-out screencap -p > tmp/screenshot.png +# 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