- Add version.properties file as single source of truth for VERSION_NAME and VERSION_CODE - Create build.ps1 script with automated version bumping (Major/Minor/Patch/None) and build orchestration - Update app/build.gradle.kts to read version from version.properties instead of hardcoded values - Display dynamic version info in Settings screen using BuildConfig.VERSION_NAME and VERSION_CODE - Add
7.1 KiB
ShaarIt - Instructions de Build Release
Prérequis
- Android Studio ou Gradle CLI
- Java JDK 8+ installé
Création du Keystore (à faire une seule fois)
Via ligne de commande:
keytool -genkey -v -keystore shaarit-release.keystore -alias shaarit -keyalg RSA -keysize 2048 -validity 10000
Informations à fournir:
- Mot de passe keystore: (notez-le précieusement!)
- Nom et prénom: Votre nom
- Unité organisationnelle: (ex: Development)
- Organisation: Votre entreprise
- Ville: Votre ville
- Province/État: Votre province
- Code pays: CA (pour Canada)
Configuration de la signature
Option 1: Variables d'environnement (recommandé)
Créez un fichier local.properties (ne pas commiter!) avec:
SHAARIT_KEYSTORE_PATH=../shaarit-release.keystore
SHAARIT_KEYSTORE_PASSWORD=votre_mot_de_passe
SHAARIT_KEY_ALIAS=shaarit
SHAARIT_KEY_PASSWORD=votre_mot_de_passe_cle
Option 2: Fichier séparé
Créez keystore.properties (ne pas commiter!) avec:
storeFile=../shaarit-release.keystore
storePassword=votre_mot_de_passe
keyAlias=shaarit
keyPassword=votre_mot_de_passe_cle
Build Release
Méthode 1: Script PowerShell build.ps1 (recommandé)
Le script build.ps1 automatise le versioning et le build. Il gère automatiquement l'incrémentation de la version dans version.properties et lance le build approprié.
Syntaxe de base:
.\build.ps1 [-Type Debug|Release] [-Bump Major|Minor|Patch|None] [-OutputFormat APK|AAB] [-Clean]
Paramètres:
-Type: Type de build (Debugpar défaut,Releasepour la production)-Bump: Type d'incrémentation de version (Patchpar défaut)-OutputFormat: Format de sortie (APKpar défaut,AABpour Google Play Store)-Clean: Effectue un clean avant le build (optionnel)
Exemples d'utilisation:
-
Build Debug avec incrément de Patch (le plus courant):
.\build.ps1 # Résultat: version 1.0.1 → 1.0.2, build Debug APK -
Build Release APK avec incrément de Minor (nouvelle fonctionnalité):
.\build.ps1 -Type Release -Bump Minor # Résultat: version 1.0.2 → 1.1.0, build Release APK -
Build Release AAB pour Google Play Store:
.\build.ps1 -Type Release -Bump Minor -OutputFormat AAB # Résultat: version 1.0.2 → 1.1.0, build Release AAB -
Build Release avec incrément de Major (version majeure):
.\build.ps1 -Type Release -Bump Major -Clean # Résultat: version 1.1.0 → 2.0.0, build Release APK avec clean -
Build Debug sans changer la version (pour tests rapides):
.\build.ps1 -Type Debug -Bump None # Résultat: version inchangée, recompilation Debug APK -
Build Release AAB pour hotfix (patch uniquement):
.\build.ps1 -Type Release -Bump Patch -OutputFormat AAB # Résultat: version 1.0.2 → 1.0.3, build Release AAB -
Build complet avec clean et version majeure:
.\build.ps1 -Type Release -Bump Major -OutputFormat AAB -Clean # Résultat: version 1.1.0 → 2.0.0, build Release AAB avec clean complet
Fichiers générés (avec renommage automatique):
- Debug APK:
app/build/outputs/apk/debug/ShaarIt-debug-x.x.x.apk - Release APK:
app/build/outputs/apk/release/ShaarIt-x.x.x.apk - Release AAB:
app/build/outputs/bundle/release/ShaarIt-x.x.x.aab(pour Google Play Store)
Format de nommage:
- Debug:
ShaarIt-debug-{VERSION_NAME}.apk - Release APK:
ShaarIt-{VERSION_NAME}.apk - Release AAB:
ShaarIt-{VERSION_NAME}.aab
Note: Le format AAB n'est disponible que pour les builds Release. Les builds Debug génèrent toujours des APK. Les fichiers sont automatiquement renommés après chaque build réussi.
Méthode 2: Gradle manuel (si nécessaire)
Si vous préférez utiliser Gradle directement:
Debug build (pour tester):
./gradlew assembleDebug
L'APK sera dans: app/build/outputs/apk/debug/app-debug.apk
Release build (pour production):
./gradlew assembleRelease
L'APK sera dans: app/build/outputs/apk/release/app-release.apk
Bundle AAB (pour Google Play Store):
./gradlew bundleRelease
Le bundle sera dans: app/build/outputs/bundle/release/app-release.aab
⚠️ Note: Avec la méthode manuelle:
- Vous devez gérer le versioning manuellement dans
version.properties - Les fichiers conservent leurs noms par défaut (
app-debug.apk,app-release.apk,app-release.aab) - Aucun renommage automatique n'est effectué
Vérification du build
Vérifiez l'APK signé:
jarsigner -verify -verbose -certs app/build/outputs/apk/release/app-release.apk
Checklist avant publication
Si vous utilisez build.ps1 (recommandé):
- Version automatiquement incrémentée par le script
- Type de bump approprié choisi (Major/Minor/Patch)
- Tests passés
- ProGuard configuré et testé
- APK/AAB généré et vérifié
- Captures d'écran prêtes pour le store
- Description de l'app rédigée
- Icône et assets graphiques finalisés
Si vous utilisez Gradle manuel:
- Version code incrémenté dans
version.properties - Version name mise à jour dans
version.properties - Tests passés
- ProGuard configuré et testé
- APK signé et vérifié
- Captures d'écran prêtes pour le store
- Description de l'app rédigée
- Icône et assets graphiques finalisés
Workflow recommandé avec build.ps1:
- Développement et tests avec
.\build.ps1 -Bump None - Quand prêt pour release:
- Hotfix:
.\build.ps1 -Type Release -Bump Patch - Nouvelle fonctionnalité:
.\build.ps1 -Type Release -Bump Minor - Version majeure:
.\build.ps1 -Type Release -Bump Major
- Hotfix:
- Vérifier l'AAB généré dans
app/build/outputs/bundle/release/ - Soumettre sur Google Play Console
Système de Versioning Automatique
Le projet utilise un système de versioning sémantique (SemVer) automatisé:
Fichiers impliqués:
version.properties: Source unique de vérité pour la versionVERSION_NAME=1.0.1 VERSION_CODE=3build.ps1: Script qui incrémente la version et lance le buildapp/build.gradle.kts: Litversion.propertiespour configurerBuildConfig- Settings → À propos: Affiche dynamiquement
BuildConfig.VERSION_NAMEetBuildConfig.VERSION_CODE
Règles de versioning:
- Major (X.0.0): Changements cassants, refactoring majeur
- Minor (X.Y.0): Nouvelles fonctionnalités, rétrocompatibles
- Patch (X.Y.Z): Corrections de bugs, petites améliorations
- VERSION_CODE: Toujours incrémenté pour Google Play Store (doit être unique)
Exemples de progression:
1.0.0 (code: 1) → Patch → 1.0.1 (code: 2)
1.0.1 (code: 2) → Minor → 1.1.0 (code: 3)
1.1.0 (code: 3) → Major → 2.0.0 (code: 4)
Notes de sécurité
⚠️ IMPORTANT: Ne jamais commiter ces fichiers:
*.keystore*.jkskeystore.propertieslocal.properties(sauf template)
Ajoutez au .gitignore:
*.keystore
*.jks
keystore.properties