feat: configurer la signature release Android

Le build release lit androidApp/keystore.properties (gitigné) pour signer
l'AAB ; sans ce fichier, il échoue volontairement. La keystore servira de
clé d'upload Play : la section Publication du README documente la
procédure et la nécessité de la sauvegarder.
This commit is contained in:
herel committed 2026-08-31 15:04:27 +02:00
1 parent 7aaef28f9e
commit a673a9dc60
3 files changed
+42

No files matched your search

+2
View File
@@ -13,6 +13,8 @@ local.properties
xcuserdata/ xcuserdata/
Pods/ Pods/
*.jks *.jks
*.keystore
androidApp/keystore.properties
*.gpg *.gpg
*yarn.lock *yarn.lock
.superpowers/ .superpowers/
+16
View File
@@ -54,6 +54,22 @@ Prérequis manuels dans [Google Play Console](https://play.google.com/console) :
(« 5 questions » … « 50 questions »). (« 5 questions » … « 50 questions »).
4. Ajouter des testeurs Play Jeux Services pour valider la connexion en dev. 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 ## Tests
```bash ```bash
+24
View File
@@ -1,10 +1,16 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import java.util.Properties
plugins { plugins {
alias(libs.plugins.compose.compiler) alias(libs.plugins.compose.compiler)
alias(libs.plugins.android.application) alias(libs.plugins.android.application)
} }
val keystoreProperties = Properties().apply {
val f = file("keystore.properties")
if (f.exists()) f.inputStream().use { load(it) }
}
android { android {
namespace = "com.livrets.androidApp" namespace = "com.livrets.androidApp"
compileSdk = 37 compileSdk = 37
@@ -18,6 +24,24 @@ android {
versionName = "1.0.0" 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 { compileOptions {
sourceCompatibility = JavaVersion.VERSION_17 sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17