Version Code est un nombre entier positif dans le développement Android qui identifie de manière unique chaque nouvelle compilation de l'application. Google Play et le système Android utilisent le Version Code pour déterminer si une mise à jour est nécessaire : si le code de la nouvelle compilation est supérieur à celui installé, le processus de mise à jour démarre. Selon la Documentation Développeur Android, le Version Code n'est pas affiché à l'utilisateur et sert exclusivement à la numérotation interne des versions.
Points clés
Version Code est un nombre entier de type Integer attribué à chaque compilation d'une application Android. Contrairement au Version Name, le Version Code n'est pas affiché à l'utilisateur et est utilisé exclusivement par le système d'exploitation et Google Play pour comparer les versions lors de l'installation des mises à jour.
Version Code doit être un nombre entier positif compris entre 1 et 2100000000. Chaque compilation ultérieure doit avoir un Version Code strictement supérieur à la précédente. Si un développeur a publié une compilation avec le Version Code 5, la publication suivante peut utiliser 6, 7 ou tout nombre supérieur à 5, mais pas 4 ni à nouveau 5.
Google a introduit la séparation entre Version Code et Version Name avec le lancement du SDK Android en 2007. Le Version Code a été conçu comme un identifiant machine pour la comparaison automatique des versions, tandis que le Version Name a été créé comme une étiquette lisible par l'homme. Cette séparation permet au développeur de nommer la version comme il le souhaite tout en maintenant un ordre strict des mises à jour via le code numérique.
| Paramètre | Version Code | Version Name |
|---|---|---|
| Type de données | Integer | String |
| Affichage à l'utilisateur | Non | Oui |
| Comparaison des versions | Comparaison numérique | Non utilisée |
| Format | 1, 2, 3, 10, 100 | 1.0.0, 2.3.1-rc |
| Plage | 1 — 2100000000 | Sans limites |
Le mécanisme de comparaison du Version Code est intégré au système d'exploitation Android et au Google Play Store. À chaque publication, Google Play vérifie que le Version Code de la nouvelle compilation est supérieur au code de la version installée. Si la condition n'est pas remplie, la publication est rejetée avec une erreur.
Lorsqu'un appareil contacte Google Play pour vérifier les mises à jour, le serveur compare le Version Code de l'application installée avec le maximum disponible dans le store. Si le code sur le serveur est supérieur, le téléchargement et l'installation de la mise à jour démarrent. L'utilisateur voit le Version Name spécifié par le développeur, mais la décision de mise à jour est prise sur la base du Version Code.
Les développeurs appliquent différentes stratégies pour incrémenter le Version Code. La plus simple est d'augmenter de 1 à chaque compilation. Pour les pipelines CI/CD, on utilise souvent un timestamp ou le numéro de compilation : 2026070301 (année-mois-jour-numéro). Il est important que le code augmente de manière monotone et ne se répète pas entre différentes compilations et pistes Google Play.
Version Code et Version Name sont deux champs indépendants dans build.gradle qui remplissent des fonctions différentes. Le Version Code est un identifiant interne pour le système, le Version Name est une étiquette marketing pour l'utilisateur. Ils peuvent changer indépendamment l'un de l'autre.
Version Name est une chaîne qui s'affiche dans les paramètres de l'application, dans Google Play et dans les dialogues de mise à jour. Le développeur peut spécifier n'importe quel format : 1.0.0, 2.3.1-beta, 3.0-rc1. Le Version Name n'est pas utilisé pour comparer les versions textuelles — Google Play se base toujours sur le Version Code.
Une situation est possible où le Version Code augmente tandis que le Version Name reste le même. Par exemple, si un développeur corrige un bogue critique dans une compilation hotfix sans modifier les fonctionnalités. Le Version Name reste 2.0.0, tandis que le Version Code passe de 5 à 6. Google Play traitera correctement cette mise à jour.
// Exemple : le version name ne change pas, le code augmente
android {
defaultConfig {
versionCode 6 // Était 5 — hotfix sans nouvelles fonctionnalités
versionName "2.0.0" // N'a pas changé
}
}
// Vérification des versions à l'exécution
val code = BuildConfig.VERSION_CODE
val name = BuildConfig.VERSION_NAME
println("Code : $code, Name : $name")
La configuration du Version Code se fait dans le fichier build.gradle du module de l'application. Le champ versionCode accepte un nombre entier et fait partie du bloc defaultConfig. Pour différentes compilations de flavors, des valeurs personnalisées peuvent être définies via le champ versionCode dans la configuration du produit.
// build.gradle.kts — Kotlin DSL
android {
defaultConfig {
applicationId "com.example.app"
versionCode 15
versionName "2.1.0"
}
flavorDimensions +"version"
productFlavors {
create("demo") {
versionCode 1015
}
create("full") {
versionCode 2015
}
}
}
Les Product flavors permettent d'utiliser différents Version Codes pour différentes configurations : version démo, version séparée pour tablettes. Si des flavors sont utilisés dans le projet, le Version Code final est composé du nombre de base et de l'incrément spécifique au flavor. Google Play suit chaque combinaison indépendamment.
Dans les pipelines CI/CD (GitHub Actions, GitLab CI, Jenkins), le Version Code est souvent généré automatiquement en fonction du numéro de compilation ou de la date. Cela élimine l'erreur humaine lors des mises à jour manuelles. Le script lit le Version Code actuel depuis build.gradle, l'incrémente et le réécrit avant de démarrer la compilation.
// Incrémentation automatique du Version Code
import java.util.Properties
import java.io.FileInputStream
val versionProps = Properties()
versionProps.load(FileInputStream("version.properties"))
val versionCode = versionProps.getProperty("VERSION_CODE").toInt() + 1
versionProps.setProperty("VERSION_CODE", versionCode.toString())
android {
defaultConfig {
versionCode = versionCode
}
}
Google Play a des règles strictes pour le Version Code lors de la publication et de la mise à jour des applications. La violation de ces règles entraîne le rejet de la compilation ou l'impossibilité de publier une mise à jour. Le développeur doit comprendre les limitations et les stratégies de gestion du code à toutes les étapes du cycle de vie.
Google Play ne permet pas de télécharger un APK ou AAB dont le Version Code est inférieur ou égal à celui actuellement publié. Cette règle s'applique à chaque piste (production, beta, alpha) indépendamment. Si une compilation avec le Version Code 10 a été téléchargée en production et une avec le code 5 en alpha, la piste alpha peut être mise à jour vers 6, 7, 8 ou 9, mais la production reste à 10.
Lors de la promotion d'une compilation de alpha vers beta puis vers production, le Version Code doit augmenter à chaque étape. Si la version alpha a le code 10, beta peut utiliser 11 et production 12. Vous ne pouvez pas déployer en production une compilation avec le code 10 si alpha utilise déjà 10, même si production ne l'a pas encore vu.
L'erreur la plus courante est la correspondance du Version Code dans différentes compilations téléchargées sur la même piste. Google Play renvoie l'erreur APK_VERSION_CODE_ALREADY_EXISTS. Une autre erreur est le dépassement de la valeur maximale de 2100000000, ce qui entraîne un échec de compilation. Pour éviter les conflits, utilisez la génération automatique de code dans votre système CI liée au numéro de compilation ou à la date de compilation.
Les développeurs commettent également souvent l'erreur de ne pas incrémenter le Version Code lors de la compilation d'une hotfix pour une piste alternative. Si la production a le code 15 et que la piste alpha est restée à 14, lors de la promotion de alpha vers production, Google Play rejettera la compilation car son code est inférieur au code actuel de production. Surveillez la monotonie du code sur toutes les pistes simultanément — pour cela, il est pratique d'utiliser un seul fichier version.properties à partir duquel toutes les pistes lisent la valeur actuelle.
Foire aux questions
Non, Google Play ne permet pas de télécharger une compilation avec un Version Code inférieur ou égal à celui actuellement publié sur la même piste. Le système vérifie le code lors du téléchargement et renvoie une erreur si la règle d'incrémentation monotone est violée. Pour les pistes alpha et bêta, le même principe s'applique indépendamment.
Pour la première publication, vous pouvez spécifier Version Code 1. Google Play ne fixe pas de seuil minimum autre qu'un nombre entier positif. Il est recommandé de commencer par 1 et d'incrémenter de 1 à chaque compilation suivante. Si vous utilisez le format timestamp, la première compilation pourrait être 20260701.
Version Code est un identifiant machine interne utilisé par le système pour la comparaison. Version Name est une étiquette orientée utilisateur affichée dans Google Play et sur l'appareil. L'utilisateur voit le Version Name (par exemple, 2.0.0), tandis que Google Play utilise le Version Code pour déterminer si une mise à jour est nécessaire.
La valeur maximale du Version Code est 2100000000 (Integer.MAX_VALUE). Si elle est dépassée, le compilateur renverra une erreur car le champ est de type int. Pour les projets avec un grand nombre de compilations (CI/CD avec des versions quotidiennes), il est recommandé d'utiliser le format timestamp ou de réinitialiser le compteur au début d'une version majeure.
Version Code n'est pas utilisé directement pour les tests A/B, mais il les influence indirectement. Google Play permet de configurer un déploiement progressif (staged rollout) par pourcentage d'utilisateurs pour une compilation spécifique. Le Version Code identifie la compilation, tandis que les tests A/B sont configurés via Firebase Remote Config ou des services similaires.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi