bollwerk/.github/skills/android-build/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

141 lines
4.8 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 Bollwerk-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, gibt es **zwei verlässliche Varianten**:
#### Variante A via `execution_subagent` (empfohlen)
```
cd x:\bollwerk ; .\gradlew assembleDebug test
```
- `.\gradlew` (ohne `.bat`) funktioniert hier einwandfrei
- Kein `| Out-String` nötig `execution_subagent` wertet den Output korrekt aus
- Tasks können kombiniert werden: `assembleDebug test`, `assembleDebug assembleRelease` etc.
- `execution_subagent` meldet `BUILD SUCCESSFUL` zuverlässig, auch wenn Gradle Warnungen auf stderr ausgibt
#### Variante B via `run_in_terminal` (PowerShell direkt)
```powershell
$env:ANDROID_HOME = "C:\Users\JensR\AppData\Local\Android\Sdk"
cd "x:\bollwerk"
.\gradlew.bat assembleDebug 2>&1 | Out-String
```
**Wichtig:** Hier **muss** `.\gradlew.bat` (mit `.bat`) und `| Out-String` verwendet werden
ohne `.bat` kann PowerShell die Ausgabe falsch interpretieren; ohne `| Out-String` werden
stderr-Warnungen als Fehler gewertet und Exit-Code 1 zurückgegeben, 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.