# YourPart Native Android Native Android-App fuer YourPart als paralleler Aufbau zur bestehenden Capacitor-App. ## Entscheidungen - Pfad: `/android/native` - Sprache: Kotlin - UI: Jetpack Compose - App-ID Debug/Local: `de.yourpart.nativeapp.local.debug` - App-ID Production Release: `de.yourpart.nativeapp` - minSdk: 26 - compileSdk/targetSdk: 36 - Flavors: `local`, `staging`, `production` - Build Types: `debug`, `release` - Feature Flags im Build: `FEATURE_ADMIN`, `FEATURE_ADULT`, `FEATURE_3D`, `FEATURE_MINIGAMES`, `FEATURE_PUSH` ## Kommandos ```bash cd android/native ../android/gradlew -p . :app:assembleLocalDebug ../android/gradlew -p . :app:installLocalDebug ./scripts/assemble-local-debug.sh ``` ## Emulator-Backend Der Android-Emulator erreicht den Host-Rechner ueber `10.0.2.2`. Der `local` Flavor nutzt: - API: `http://10.0.2.2:2020` - Socket.IO: `http://10.0.2.2:2020` - Daemon: `ws://10.0.2.2:2021` ## Security - Debug erlaubt Cleartext nur fuer `10.0.2.2` und `localhost`. - Release verbietet Cleartext komplett. - Release-Builds pruefen automatisch, dass keine lokalen oder unverschluesselten URLs in `staging` oder `production` verwendet werden. ## Firebase Push 1. Die registrierte Produktions-App `de.yourpart.nativeapp` als `app/google-services.json` ablegen. Die Beispieldatei `app/google-services.json.example` ist kein gültiger Ersatz. 2. Push ist ausschließlich in `productionRelease` aktiviert. `local` und `staging` verwenden abweichende Paketnamen und bleiben absichtlich pushfrei, bis dafür eigene Firebase-Apps registriert sind. 3. Im Backend eine Firebase-Service-Account-Datei außerhalb des Repositories bereitstellen und `FIREBASE_SERVICE_ACCOUNT_PATH=/sicherer/pfad/firebase-service-account.json` setzen. Alternativ kann `FIREBASE_SERVICE_ACCOUNT_JSON` mit dem JSON-Inhalt gesetzt werden. Ohne eine dieser Variablen werden keine Pushes versendet, die App und die API bleiben aber funktionsfähig. Das Google-Services-Plugin wird nur für `productionRelease` mit vorhandener echter Konfigurationsdatei angewendet; lokale Builds bleiben dadurch reproduzierbar.