bollwerk/.github/skills/android-build/SKILL.md
Jens Reinemann 085d8685a8 docs(skills): align emulator and build docs with actual scripts
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.
2026-05-13 22:29:09 +02:00

126 lines
4.2 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-build
description: "Android-App bauen (assembleDebug/Release), Gradle-Kommandos, häufige Build-Fehler beheben. Verwende diesen Skill für alles rund um Kompilierung, Gradle, Dependency-Management und Build-Konfiguration. Trigger-Phrasen: 'build', 'bauen', 'kompilieren', 'assembleDebug', 'Gradle', 'dependency', 'APK'."
---
# Skill: Android Build
Baut die Krisenvorrat-Android-App mit Gradle. Handhabt bekannte Fallstricke auf diesem Windows-Setup.
---
## Voraussetzungen
| Komponente | Pfad / Wert |
| ---------------- | ---------------------------------------------------------------------- |
| Android SDK | `C:\Users\JensR\AppData\Local\Android\Sdk` |
| ANDROID_HOME | User-Umgebungsvariable (persistent gesetzt) |
| local.properties | `sdk.dir=C\\:\\\\Users\\\\JensR\\\\AppData\\\\Local\\\\Android\\\\Sdk` |
| Java | OpenJDK 21 (im PATH) |
| Gradle | 8.11.1 (via Wrapper) |
| Kotlin | 2.1.10 |
| AGP | 8.7.3 |
---
## Build-Kommandos
Verwende **immer** das `android-dev.ps1`-Skript statt roher Gradle-Aufrufe:
```powershell
# Debug-Build (Standard)
& ".github/skills/android-build/android-dev.ps1" -Action build
# Clean + Build (bei File-Locks oder korruptem Cache)
& ".github/skills/android-build/android-dev.ps1" -Action clean-build
# Nur clean
& ".github/skills/android-build/android-dev.ps1" -Action clean
# Hot Reload: Build + Install + Relaunch auf laufendem Emulator (ohne Neustart)
& ".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:
```powershell
$env:ANDROID_HOME = "C:\Users\JensR\AppData\Local\Android\Sdk"
cd "x:\krisenvorrat"
.\gradlew.bat assembleDebug 2>&1 | Out-String
```
**Wichtig:** Niemals `.\gradlew.bat ... 2>&1` ohne `| Out-String` verwenden PowerShell interpretiert stderr-Warnungen sonst als Fehler und zeigt Exit-Code 1, obwohl Gradle `BUILD SUCCESSFUL` meldet.
---
## Bekannte Probleme
### 1. Build-Dateien gesperrt (`AccessDeniedException`)
Dateien im `build/`-Verzeichnis können durch andere Prozesse gesperrt sein.
**Lösung:**
```powershell
Remove-Item "app\build" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "build" -Recurse -Force -ErrorAction SilentlyContinue
# Dann erneut bauen
```
Das `android-dev.ps1`-Skript macht dies automatisch bei `-Action clean-build`.
### 2. PowerShell zeigt Exit-Code 1 trotz BUILD SUCCESSFUL
Gradle gibt Deprecation-Warnungen auf stderr aus. PowerShell wertet das als Fehler.
**Lösung:** Prüfe den Gradle-Output auf `BUILD SUCCESSFUL`, nicht den Exit-Code.
### 3. `Batchvorgang abbrechen (J/N)?`
Tritt auf, wenn `gradlew.bat` ein Ctrl+C-Signal empfängt (z.B. durch Terminal-Timeout).
**Lösung:** Verwende `| Out-String` und ausreichend Timeout (600s+). Das `android-dev.ps1`-Skript umgeht dieses Problem.
### 4. `android.useAndroidX` fehlt
```
gradle.properties muss enthalten:
android.useAndroidX=true
```
---
## APK-Ausgabe
| Variante | Pfad |
| -------- | ----------------------------------------------- |
| Debug | `app/build/outputs/apk/debug/app-debug.apk` |
| Release | `app/build/outputs/apk/release/app-release.apk` |
---
## Terminal-Aufruf-Konventionen
```powershell
# Immer so aufrufen:
run_in_terminal mode=sync timeout=600000
```
Gradle-Builds dauern beim ersten Mal 25 Minuten (Daemon-Start + Download). Folge-Builds: 1030 Sekunden.