# Android-Veröffentlichung

Diese App wird für Google Play als `Android App Bundle` (`.aab`) veröffentlicht.

## Stand des Projekts

- `applicationId`: `net.ypchat.app`
- `minSdk`: `26`
- `targetSdk`: `36`
- Produktiv-Backend standardmäßig: `https://www.ypchat.net`
- Release-Build verwendet standardmäßig `HTTPS only`

Hinweis: Laut Android Developers müssen neue Apps bei Google Play seit dem 31. August 2025 mindestens auf API-Level 35 zielen. Dieses Projekt erfüllt das bereits mit `targetSdk = 36`.

Quelle:
- [Meet Google Play's target API level requirement](https://developer.android.com/distribute/best-practices/develop/target-sdk)
- [Use Play App Signing](https://support.google.com/googleplay/android-developer/answer/9842756)
- [Provide information for Google Play's Data safety section](https://support.google.com/googleplay/android-developer/answer/10787469)

## 1. Upload-Key erzeugen

Im Ordner `android/` einen Upload-Key anlegen, zum Beispiel:

```powershell
keytool -genkeypair `
  -v `
  -keystore release-upload-key.jks `
  -alias upload `
  -keyalg RSA `
  -keysize 4096 `
  -validity 10000
```

Danach `android/key.properties` aus `android/key.properties.example` erzeugen:

```properties
storeFile=release-upload-key.jks
storePassword=DEIN_STORE_PASSWORT
keyAlias=upload
keyPassword=DEIN_KEY_PASSWORT
```

Wichtig:
- `android/key.properties`
- `android/*.jks`
- `android/*.keystore`

sind in `.gitignore` ausgenommen und sollen nicht committed werden.

## 2. Versionsnummer vor Release setzen

Datei:
- `android/app/build.gradle.kts`

Vor jedem Store-Release anpassen:

```kotlin
versionCode = 2
versionName = "0.2.0"
```

Regel:
- `versionCode` muss bei jedem Play-Update höher sein als beim letzten Upload.
- `versionName` ist die sichtbare Versionsnummer im Store.

## 3. Release-Bundle bauen

Im Ordner `android/`:

```powershell
.\gradlew bundleRelease
```

Das Ergebnis liegt hier:

```text
android/app/build/outputs/bundle/release/app-release.aab
```

Falls zuerst ein Clean-Build gewünscht ist:

```powershell
.\gradlew clean bundleRelease
```

## 4. Google Play Console

Für eine neue App in der Play Console:

1. App anlegen
2. Standardsprache wählen
3. App-Name festlegen
4. App-Kategorie auswählen
5. Kontakt-E-Mail hinterlegen

Danach:

1. `Internal testing` oder `Closed testing` anlegen
2. `app-release.aab` hochladen
3. Play App Signing aktivieren

Empfehlung:
- Für die erste Veröffentlichung zuerst `Internal testing`
- Danach `Closed testing`
- Erst anschließend `Production`

## 5. Store-Inhalte vorbereiten

Benötigt werden in der Regel:

- App-Name
- Kurzbeschreibung
- Vollständige Beschreibung
- App-Symbol
- Screenshots vom Smartphone
- Datenschutzerklärung-URL
- Support-/Kontaktadresse

Für diese App zusätzlich sinnvoll:

- Hinweis auf Chat, Bildaustausch und internationale Nutzung
- Hinweis auf Moderation/Blockieren/Feedback

## 6. Data Safety

In der Play Console muss das Formular zur Datensicherheit ausgefüllt werden.

Nach aktuellem Projektstand werden mindestens diese Daten serverseitig verarbeitet oder übertragen:

- Nutzername
- Alter
- Geschlecht
- Land
- Chat-Nachrichten
- Bilder
- Feedback-Inhalte
- Session-/Verbindungsdaten

Das Formular muss anhand des tatsächlichen Serververhaltens final geprüft werden. Wenn Backend oder Logs zusätzliche Daten erfassen, muss das dort ebenfalls deklariert werden.

## 7. Vor dem ersten echten Release prüfen

- Release-Build startet auf echtem Gerät
- Login gegen Produktiv-Backend funktioniert
- Socket-Verbindung stabil
- Bilder senden/empfangen funktioniert
- Länderauswahl/Geschlecht korrekt
- App-Symbol korrekt
- Texte/Internationalisierung korrekt
- Impressum und Datenschutzerklärung vorhanden
- Datenschutzerklärung-URL öffentlich erreichbar

## 8. Empfehlung für den nächsten Schritt

Der sinnvollste nächste operative Schritt ist:

1. Upload-Key erzeugen
2. `android/key.properties` lokal anlegen
3. `versionCode` und `versionName` setzen
4. `bundleRelease` bauen
5. mit dem erzeugten `.aab` in `Internal testing` hochladen
