#!/usr/bin/env bash # Génération du KEYSTORE de signature RELEASE + keystore.properties (v1.9.8). # # Les deux fichiers sont écrits à la RACINE du dépôt et sont GITIGNORÉS # (.gitignore) : ne JAMAIS les committer — le keystore et ses mots de passe # sont l'identité de l'app (une fuite = n'importe qui peut publier un APK qui # se met à jour par-dessus le tien). # # Usage : # scripts/make-release-keystore.sh # # Après génération, `./gradlew assembleRelease` signe automatiquement avec ce # keystore (app/build.gradle.kts détecte keystore.properties). # # ⚠️ MIGRATION sur le téléphone (signature différente de la clé debug) : # 1. Paramètres → Sauvegarde → Exporter (JSON) — OU auto-backup existant ; # 2. désinstaller l'app (debug-signée) ; # 3. installer l'APK release signé par le nouveau keystore ; # 4. Paramètres → Sauvegarde → Importer. # La base Room n'est PAS convertible entre signatures : seul le JSON voyage. set -euo pipefail cd "$(dirname "$0")/.." KEYSTORE_FILE="release.keystore" PROPERTIES_FILE="keystore.properties" if [[ -f "$PROPERTIES_FILE" || -f "$KEYSTORE_FILE" ]]; then echo "ERREUR : $PROPERTIES_FILE et/ou $KEYSTORE_FILE existent déjà." >&2 echo "Supprime-les d'abord si tu veux vraiment les régénérer (une régénération" >&2 echo "= perte de la capacité de mettre à jour les installs existantes)." >&2 exit 1 fi read -r -p "Mot de passe du keystore (>= 6 caractères) : " -s STORE_PASS echo read -r -p "Confirmation : " -s STORE_PASS_CONFIRM echo if [[ "$STORE_PASS" != "$STORE_PASS_CONFIRM" || ${#STORE_PASS} -lt 6 ]]; then echo "ERREUR : les mots de passe ne correspondent pas ou font moins de 6 caractères." >&2 exit 1 fi # keyPassword = storePassword ici (un seul secret à retenir) ; keytool exige >= 6 car. keytool -genkeypair \ -keystore "$KEYSTORE_FILE" \ -alias hormonetrack \ -keyalg RSA -keysize 4096 -validity 10000 \ -storepass "$STORE_PASS" \ -keypass "$STORE_PASS" \ -dname "CN=HormoneTrack, OU=HormoneTrack, O=HormoneTrack" chmod 600 "$KEYSTORE_FILE" cat >"$PROPERTIES_FILE" <