android-build SKILL.md: - Replaced all OneDrive path references with x:\krisenvorrat - Changed 'OneDrive-Locks' terminology to 'File-Locks' android-build android-dev.ps1: - Changed 'OneDrive-Lock' comments to 'File-Lock' - Script already used dynamic $PSScriptRoot path resolution, no path fix needed android-emulator SKILL.md: - Updated path references to new project location Motivation: project was moved from C:\Users\JensR\OneDrive\Code\krisenvorrat to x:\krisenvorrat to avoid OneDrive sync issues.
108 lines
3.6 KiB
Markdown
108 lines
3.6 KiB
Markdown
---
|
||
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
|
||
```
|
||
|
||
### 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 2–5 Minuten (Daemon-Start + Download). Folge-Builds: 10–30 Sekunden.
|