Fix Android release build and verify on emulator
- Disable Kotlin incremental compilation (kotlin.incremental=false): the project lives on D: while Gradle's Kotlin daemon caches default to C:, which crashes with "this and base files have different roots" when closing incremental caches. - Drop flutter_map_tile_caching for now: it pins objectbox_flutter_libs ^4.1.0, which fails checkReleaseAarMetadata against newer AndroidX transitive deps (needs compileSdk 34+, itself built against android-31). Not used in code yet, so deferred rather than forcing an unverified dependency_override. - Add web/ platform for fast local UI iteration without an emulator. - Ignore .claude/ (Claude Code session state, not project content). Verified: flutter analyze, flutter test, and a real release build running on a newly created Pixel_10a-profile Android emulator (API 36). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
346fcc2183
commit
ac14ad4c4c
@@ -60,10 +60,19 @@ dart run build_runner build
|
||||
(im `app/`-Verzeichnis; `--delete-conflicting-outputs` wird von der installierten
|
||||
build_runner-Version ignoriert und ist nicht nötig).
|
||||
|
||||
**Entschiedene Pakete** (siehe Doku Abschnitt 8): `flutter_map` + `flutter_map_tile_caching`
|
||||
(nicht `google_maps_flutter`), `drift`, `flutter_bloc` + `flutter_riverpod` (kombiniert:
|
||||
Bloc für die App-Mode State Machine, Riverpod für reaktive Einzelwerte wie Telemetrie),
|
||||
`go_router`.
|
||||
**Entschiedene Pakete** (siehe Doku Abschnitt 8): `flutter_map` (nicht `google_maps_flutter`),
|
||||
`drift`, `flutter_bloc` + `flutter_riverpod` (kombiniert: Bloc für die App-Mode State
|
||||
Machine, Riverpod für reaktive Einzelwerte wie Telemetrie), `go_router`.
|
||||
|
||||
**`flutter_map_tile_caching` (FMTC, Doku 4.18) ist aktuell NICHT in der pubspec** —
|
||||
FMTC 10.1.1 pinnt `objectbox_flutter_libs: ^4.1.0` fest, und diese Version hat einen
|
||||
AAR-Metadata-Konflikt mit neueren AndroidX-Transitiv-Dependencies (`androidx.fragment`,
|
||||
`androidx.window`, `androidx.activity` verlangen compileSdk ≥34, `objectbox_flutter_libs`
|
||||
selbst ist gegen android-31 kompiliert) → Build schlägt fehl
|
||||
(`checkReleaseAarMetadata`). Da FMTC im Code noch nirgends verwendet wird, wurde es
|
||||
vorerst entfernt statt mit ungetesteten `dependency_overrides` zu forcieren. Vor
|
||||
erneutem Hinzufügen: prüfen, ob FMTC eine neuere Version mit `objectbox_flutter_libs ^5.x`
|
||||
freigegeben hat.
|
||||
|
||||
**Noch nicht umgesetzt / bewusst zurückgestellt:**
|
||||
- Eigener MSP-Encoder/Decoder in Dart (4.19) — kein fertiges Paket verfügbar.
|
||||
@@ -71,8 +80,25 @@ Bloc für die App-Mode State Machine, Riverpod für reaktive Einzelwerte wie Tel
|
||||
Protokoll-Adapter zu verifizieren.
|
||||
- `SurveyAreaMission`/`SearchAreaMission` (Strategy-Pattern vorgesehen, Details offen).
|
||||
- Foreground Service (Android) für Hintergrund-Telemetrie (4.20).
|
||||
- Offline-Kartenkachel-Caching (FMTC, siehe oben) — Paket-Versionskonflikt zu lösen.
|
||||
- `flutter_launcher_icons` ist konfiguriert für Android; iOS ist aus MVP-Gründen
|
||||
deaktiviert (`ios: false` in der `flutter_launcher_icons`-Sektion der `pubspec.yaml`).
|
||||
- `web/`-Plattform ist nur für schnelle lokale UI-Vorschau hinzugefügt (kein Android-
|
||||
Emulator/Gerät nötig), nicht Teil des Release-Scopes.
|
||||
|
||||
## Bekannte Windows-Stolpersteine beim Android-Build
|
||||
|
||||
- **Projekt liegt auf D:, Gradle-/Kotlin-Nutzerverzeichnis auf C:** → Kotlins
|
||||
inkrementeller Compiler crasht beim Schließen der Caches
|
||||
(`Could not close incremental caches ... this and base files have different roots`).
|
||||
Fix bereits gesetzt: `kotlin.incremental=false` in `android/gradle.properties`.
|
||||
- **`flutter run -d <emulator-id> --release`** ist der zuverlässigste Weg, einen
|
||||
Android-Emulator/Gerät aus diesem (nicht-interaktiven) Environment heraus zu
|
||||
bespielen — Debug-Modus mit Hot-Reload funktioniert nur in einer echten
|
||||
interaktiven Session (VS Code, Terminal).
|
||||
- **`adb shell`/`adb pull` mit absoluten Unix-Pfaden (`/sdcard/...`) in Git Bash**:
|
||||
MSYS wandelt den führenden Slash-Pfad fälschlich in einen Windows-Pfad um. Fix:
|
||||
Pfad mit doppeltem Slash schreiben (`//sdcard/datei.png`).
|
||||
|
||||
## Verifikation nach Änderungen
|
||||
|
||||
@@ -81,3 +107,11 @@ Im `app/`-Verzeichnis:
|
||||
flutter analyze
|
||||
flutter test
|
||||
```
|
||||
|
||||
Für einen echten Lauf auf Android (z. B. Emulator `Pixel_10a`, angelegt mit dem
|
||||
`pixel_10`-Geräteprofil als Näherung, da kein exaktes "Pixel 10a"-Profil im SDK
|
||||
existiert):
|
||||
```
|
||||
flutter emulators --launch Pixel_10a
|
||||
flutter run -d emulator-5554 --release
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user