# Development ## Backend-URL **Standard:** `https://tt-tagebuch.de` – gesetzt in `gradle.properties` (`backendBaseUrl=…`) und als Fallback in `composeApp/build.gradle.kts`. Für lokale Entwicklung läuft der Backend-Server auf deinem Rechner typischerweise unter **`http://localhost:3005`**. Die **Android-Studio-VM (Emulator)** kann **`localhost` / `127.0.0.1` nicht** für diesen lokalen Server nutzen: dort ist „localhost“ der Emulator selbst, nicht dein PC. Für lokale Emulator-Tests nutze `http://10.0.2.2:3005`. **HTTP / Cleartext:** Ab Android 9 blockiert das System unverschlüsseltes HTTP standardmäßig. Für die lokale Dev-URL ist das in `composeApp/src/androidMain/res/xml/network_security_config.xml` für `10.0.2.2`, `localhost` und `127.0.0.1` freigegeben. Testest du mit der **LAN-IP deines PCs** (echtes Gerät), musst du diese IP dort als weiteres `` ergänzen oder kurzzeitig HTTPS nutzen. ### Wenn die App trotz Rebuild noch `localhost` zeigt 1. **Android Studio überschreibt Gradle:** **Settings → Build, Execution, Deployment → Build Tools → Gradle** beim Projekt `mobile-app` prüfen, ob unter **Command-line options** etwas wie `-PbackendBaseUrl=http://localhost:3005` steht – das entfernen oder bewusst setzen. 2. **Alte Installation / Build-Cache:** Emulator-App deinstallieren, Clean, neu installieren: ```bash cd mobile-app adb uninstall de.tt_tagebuch.app ./gradlew :composeApp:clean :composeApp:installDebug --no-configuration-cache ``` Oder das Skript: `./scripts/install-debug-emulator.sh` 3. **BuildConfig prüfen:** Nach dem Build in `composeApp/build/generated/.../BuildConfig.java` den Wert von `BACKEND_BASE_URL` ansehen – der muss `https://tt-tagebuch.de` sein (oder deine bewusste Override-URL). ### Android Studio „Run“ geht nicht - Projekt **`mobile-app/`** als Root öffnen (nicht nur den übergeordneten Monorepo-Ordner, wenn Studio das Modul nicht erkennt). - **Run → Edit Configurations → Android App:** Modul **`composeApp`** wählen. - Alternativ immer über die Kommandozeile installieren (siehe oben) und die App im Emulator starten. Überschreiben per Gradle-Property, z. B. lokaler Emulator: ```bash ./gradlew :composeApp:installDebug -PbackendBaseUrl=http://10.0.2.2:3005 ``` **Alternative:** Port vom PC auf den Emulator weiterleiten, dann geht wieder `localhost`: ```bash adb reverse tcp:3005 tcp:3005 ./gradlew :composeApp:installDebug -PbackendBaseUrl=http://localhost:3005 ``` ## Smoke flow (Android) 1. Start backend (default `http://localhost:3005`) 2. Start Android emulator 3. App installieren: `./scripts/install-debug-emulator.sh` oder Run in Studio (Modul **`composeApp`**) 4. Login → Club auswählen → Rolle wird angezeigt 5. Open `Tagebuch` → die letzten Einträge werden angezeigt ## Gradle Wrapper Use the wrapper from `mobile-app/`: ```bash cd mobile-app ./gradlew tasks ``` Note (Codex sandbox only): the sandbox home directory is read-only, so run with: ```bash GRADLE_USER_HOME=/tmp/gradle-home ./gradlew tasks ``` ## i18n generation ```bash node scripts/generate-mobile-i18n.js ``` This reads all web locale JSON files and writes the generated KMP bundle to `mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/i18n/MobileStrings.kt`. ## Build Recommended: - Open `mobile-app/` in Android Studio and run the `composeApp` configuration.