Préparer une compilation de publication
Lots d’applications et réduction de taille.
Préparer une compilation de publication est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 4 leçons au total.
Du débogage à la publication
Chaque jour, vous exécutez la version de débogage depuis Android Studio. Mais Google Play nécessite une version de publication : plus petite, plus rapide et non marquée comme débogable.
Une version de publication se distingue de trois façons essentielles : elle est signée avec votre clé de publication, elle contient debuggable false et elle est généralement réduite afin de supprimer le code et les ressources inutilisés.
Dans cette leçon, vous préparerez une version de publication correcte et produirez le fichier attendu par Google Play : un Android App Bundle (.aab).
Types de compilation dans Gradle
Gradle définit par défaut deux types de compilation : debug et release. Vous les configurez dans le fichier build.gradle.kts de votre module.
Le bloc release permet d’activer les optimisations. Remarquez isMinifyEnabled et isShrinkResources ci-dessous : ce sont les options qui réduisent la taille de votre application.
android {
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
}AAB contre APK
Google Play exige un Android App Bundle (.aab), et non un simple .apk.
- Un .apk contient le code et les ressources pour tous les appareils : toutes les densités d’écran, toutes les architectures de processeur et toutes les langues.
- Un .aab est envoyé à Play, qui génère un APK compact et optimisé pour l’appareil exact de chaque utilisateur.
Résultat : les utilisateurs téléchargent moins de données et votre application s’installe dans un espace réduit. Vous utilisez toujours des APK pour les tests directs sur un téléphone, mais vous publiez un AAB.
Qu’est-ce que R8 et la réduction ?
Lorsque isMinifyEnabled = true, Android Studio exécute R8. R8 effectue trois tâches en un seul passage :
- Réduction — supprime les classes et méthodes que votre application n’appelle jamais.
- Obfuscation — renomme les classes et les méthodes avec des noms courts comme
a,betcafin de gagner de l’espace et de compliquer la rétro-ingénierie. - Optimisation — intègre et réécrit le code pour accélérer son exécution.
La réduction des ressources (isShrinkResources = true) supprime en plus les éléments graphiques, mises en page et chaînes inutilisés.
Règles de conservation avec ProGuard
R8 supprime ou renomme parfois du code qui n’est référencé que par réflexion (par exemple par Gson, Retrofit ou la sérialisation). Vous protégez ce code avec des règles de conservation dans proguard-rules.pro.
Une règle de conservation indique à R8 : "ne renommez pas et ne supprimez pas ces classes".
# proguard-rules.pro
# Keep data classes used with Gson reflection
-keep class com.example.app.model.** { *; }
# Keep Retrofit interface methods
-keepattributes Signature
-keepattributes *Annotation*
# Keep Kotlin metadata used by libraries
-keep class kotlin.Metadata { *; }Versionner votre application
Chaque version publiée nécessite deux valeurs de version dans build.gradle.kts :
versionCode— un entier qui doit augmenter à chaque téléversement. Play l’utilise pour déterminer quelle compilation est la plus récente.versionName— une chaîne lisible par les utilisateurs, comme"1.4.0", qui leur est affichée.
Si vous oubliez d’augmenter versionCode, Play rejette le téléversement comme doublon.
android {
defaultConfig {
applicationId = "com.example.app"
minSdk = 24
targetSdk = 35
versionCode = 12
versionName = "1.4.0"
}
}Créer le bundle dans Android Studio
Pour créer un bundle de version signé depuis l’interface :
- Ouvrez Build → Generate Signed Bundle / APK.
- Choisissez Android App Bundle.
- Sélectionnez (ou créez) votre keystore et votre clé.
- Choisissez la variante de compilation release.
Android Studio exécute R8, signe le bundle et place le fichier .aab dans app/release/. C’est ce fichier unique que vous téléversez sur Play.
Créer depuis la ligne de commande
Pour l’intégration et le déploiement continus ou les scripts, créez directement le bundle avec Gradle. Le nom de la tâche suit le modèle bundle<Variant>.
bundleRelease produit l’AAB. Le fichier est placé dans app/build/outputs/bundle/release/.
# Build a release App Bundle (.aab)
./gradlew bundleRelease
# Output:
# app/build/outputs/bundle/release/app-release.aab
# Build a release APK instead (for direct install/testing)
./gradlew assembleReleaseInspecter et tester l’AAB
Vous ne pouvez pas installer directement un .aab sur un téléphone. Pour tester les APK exacts que Play générerait, utilisez bundletool de Google.
Cet outil crée des APK spécifiques à l’appareil à partir de votre bundle et les installe sur un appareil connecté — c’est ce qui se rapproche le plus d’un véritable téléchargement depuis Play.
# Generate APKs from the bundle for the connected device
java -jar bundletool.jar build-apks \
--bundle=app-release.aab \
--output=app.apks \
--connected-device
# Install them on the device
java -jar bundletool.jar install-apks --apks=app.apksSupprimer le code de débogage de la version publiée
Une compilation de version publiée ne doit pas journaliser de données sensibles ni laisser activées des fonctionnalités réservées au débogage. Utilisez BuildConfig.DEBUG pour choisir le comportement. Cette valeur est true uniquement dans les compilations de débogage.
R8 peut même supprimer les blocs protégés par une constante false, ce qui réduit également la taille.
fun setupLogging() {
if (BuildConfig.DEBUG) {
// Verbose logging only in debug builds
Log.d("App", "Debug logging enabled")
Timber.plant(Timber.DebugTree())
} else {
// Release: send to crash reporting only, no console spam
Timber.plant(CrashReportingTree())
}
}Liste de contrôle avant publication
Avant de créer le bundle final, vérifiez les points suivants :
versionCodea été augmenté etversionNamemis à jour.isMinifyEnabledetisShrinkResourcessont activés pour la publication.- Des règles de conservation ont été ajoutées pour toutes les bibliothèques utilisant la réflexion.
targetSdkrespecte l’exigence actuelle de Play.- Aucune journalisation réservée au débogage ni aucun point de terminaison de test ne se trouve dans le code de publication.
- Vous avez testé l’AAB avec bundletool sur un appareil réel.
Une fois ces vérifications réussies, votre .aab est prêt à être téléversé.
Vérification rapide
Vous avez défini isMinifyEnabled = true et votre application plante en version publiée avec une erreur "class not found" provenant de votre analyseur JSON, alors qu’elle fonctionne correctement en débogage. Quelle est la cause la plus probable ?
Récapitulatif : préparer une compilation de publication
Vous savez maintenant transformer une application de débogage en compilation publiable :
- Play exige un .aab signé et génère à partir de celui-ci des APK pour chaque appareil.
- Le type de compilation
releaseactive R8 viaisMinifyEnabledetisShrinkResourcespour réduire, obfusquer et optimiser le code. - Les règles de conservation protègent le code fondé sur la réflexion contre sa suppression.
- Augmentez toujours
versionCodeet mettez à jourversionName. - Créez la compilation avec
./gradlew bundleReleaseet testez le résultat avec bundletool.
Ensuite : comment fonctionne réellement la signature qui rend cette compilation fiable.
Questions Fréquemment Posées
La leçon « Préparer une compilation de publication » est-elle gratuite ?
Oui — le texte complet de « Préparer une compilation de publication » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Préparer une compilation de publication » ?
Lots d’applications et réduction de taille. Tu pratiques Android Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Android Academy ?
Aucune expérience préalable n'est requise. Android Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Préparer une compilation de publication » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Android Academy ?
Oui. Chaque leçon Android Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Préparer une compilation de publication
- Signature de l’application
- La Play Console et la fiche de l’application
- Déploiements progressifs et mises à jour