diff --git a/.gitignore b/.gitignore index 1b2f3c9..601b947 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,8 @@ local.properties xcuserdata/ Pods/ *.jks +*.keystore +androidApp/keystore.properties *.gpg *yarn.lock .superpowers/ diff --git a/README.MD b/README.MD index 8800ee7..e33cd12 100644 --- a/README.MD +++ b/README.MD @@ -54,6 +54,22 @@ Prérequis manuels dans [Google Play Console](https://play.google.com/console) : (« 5 questions » … « 50 questions »). 4. Ajouter des testeurs Play Jeux Services pour valider la connexion en dev. +## Publication Android (Play Store) + +Générer l'App Bundle signé : + +```bash +./gradlew :androidApp:bundleRelease # androidApp/build/outputs/bundle/release/androidApp-release.aab +``` + +La signature release lit `androidApp/keystore.properties` (gitigné) avec les clés +`storeFile`, `storePassword`, `keyAlias`, `keyPassword`. Sans ce fichier, le build +release échoue (volontairement) et seuls les builds debug restent possibles. + +La keystore `androidApp/livrets-release.keystore` sert de clé d'upload Play : +**la sauvegarder** (avec `keystore.properties`), sinon plus de mises à jour possibles. +À chaque release : incrémenter `versionCode` dans `androidApp/build.gradle.kts`. + ## Tests ```bash diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts index 322a09b..8a2f464 100644 --- a/androidApp/build.gradle.kts +++ b/androidApp/build.gradle.kts @@ -1,10 +1,16 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import java.util.Properties plugins { alias(libs.plugins.compose.compiler) alias(libs.plugins.android.application) } +val keystoreProperties = Properties().apply { + val f = file("keystore.properties") + if (f.exists()) f.inputStream().use { load(it) } +} + android { namespace = "com.livrets.androidApp" compileSdk = 37 @@ -18,6 +24,24 @@ android { versionName = "1.0.0" } + signingConfigs { + create("release") { + if (keystoreProperties.isNotEmpty()) { + storeFile = file(keystoreProperties["storeFile"] as String) + storePassword = keystoreProperties["storePassword"] as String + keyAlias = keystoreProperties["keyAlias"] as String + keyPassword = keystoreProperties["keyPassword"] as String + } + } + } + + buildTypes { + release { + isMinifyEnabled = false + signingConfig = signingConfigs.getByName("release") + } + } + compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17