Build Config inclut les paramètres de compilation : types de build, flags de compilation, clés de signature et versions SDK qui déterminent comment une application est construite pour différents environnements. Selon Android Developers Guide (2026), le système de build Gradle prend en charge Product Flavors et Build Types pour une configuration flexible. Build Config automatise le basculement entre debug et release sans modification manuelle du code.
Points clés
Build Config est un ensemble de paramètres qui définissent le processus de compilation, de construction et d'empaquetage d'une application mobile. La configuration de build inclut la sélection de la plateforme cible, de la version minimale du SDK, des flags d'optimisation, des clés de signature et des variables d'environnement.
Les projets mobiles modernes ont rarement une seule configuration de build. Ils en ont généralement plusieurs : debug (pour le développement avec débogage), release (pour la production avec optimisation), staging (pour les tests avec des données réelles) et divers flavors (démo, complète, entreprise).
Selon la Gradle Build Tool Survey (2025), un projet Android moyen utilise 3,2 configurations de build différentes, tandis qu'un projet iOS en utilise 2,8. Chaque configuration peut avoir ses propres flags de compilation, certificats de signature et URL de serveurs.
La tâche principale de Build Config est d'automatiser le basculement entre ces configurations. Au lieu de modifier manuellement l'URL du serveur ou le flag de débogage, le développeur sélectionne le Build Variant souhaité dans l'IDE, et le système de build substitue les paramètres correspondants.
Une configuration correcte de Build Config affecte de manière critique la sécurité de l'application : les builds debug incluent des logs détaillés, un inspecteur de base de données et des points de terminaison de débogage qui doivent être physiquement exclus du binaire release. Gradle résout cela via Build Types : debug peut avoir le flag debuggable true, release — minifyEnabled true avec ProGuard. iOS atteint le même résultat via Swift Active Compilation Conditions, où le code à l'intérieur de #if DEBUG n'est pas compilé dans la configuration release.
Android utilise le système de build Gradle avec deux concepts clés : Build Types et Product Flavors. Leur combinaison forme des Build Variants — chaque variante a sa propre configuration de build complète.
Build Type est une configuration qui définit comment l'application est construite. Par défaut, Gradle crée deux types : debug (avec débogage, sans obscurcissement) et release (avec ProGuard/R8, signé pour publication). Le développeur peut ajouter ses propres types : staging, benchmark, qa.
// build.gradle.kts
android {
buildTypes {
debug {
isDebuggable = true
buildConfigField("String", "API_URL", "\"http://dev.api.com\"")
}
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
buildConfigField("String", "API_URL", "\"https://prod.api.com\"")
}
}
}
Product Flavors permettent de créer différentes versions de la même application à partir d'une seule base de code. Par exemple : version gratuite avec publicité, version payante sans publicité et version entreprise avec des fonctionnalités supplémentaires. Chaque flavor peut avoir son propre applicationId, ses ressources et ses dépendances SDK.
android {
productFlavors {
register("demo") {
applicationId = "com.example.app.demo"
versionNameSuffix = "-demo"
}
register("full") {
applicationId = "com.example.app"
versionNameSuffix = ""
}
}
}
Pour chaque Build Variant, Gradle génère une classe BuildConfig avec des champs de configuration. Le développeur ajoute des champs personnalisés via buildConfigField, tandis que les champs standard (DEBUG, APPLICATION_ID, BUILD_TYPE, VERSION_CODE, FLAVOR) sont créés automatiquement.
// Utilisation de BuildConfig dans le code
class NetworkModule {
fun createApiClient(): ApiClient {
return if (BuildConfig.DEBUG) {
ApiClient(
baseUrl = BuildConfig.API_URL,
interceptor = HttpLoggingInterceptor()
)
} else {
ApiClient(baseUrl = BuildConfig.API_URL)
}
}
}
BuildConfig permet également d'activer ou de désactiver des fonctionnalités au moment de la compilation. Par exemple, vous pouvez ajouter un champ FEATURE_CHAT_ENABLED et activer le chat uniquement dans la version complète de l'application, sans vérifications à l'exécution ni opérateurs conditionnels dans le code.
Pour déboguer les requêtes réseau, BuildConfig avec le champ DEBUG permet d'attacher automatiquement HttpLoggingInterceptor dans OkHttp uniquement pour les builds debug. Cela garantit qu'aucune requête HTTP ne sera journalisée en production, même si le développeur oublie accidentellement de supprimer la journalisation avant de compiler la release.
Dans l'écosystème iOS, Build Config est géré via les Xcode Build Settings — un tableau de paramètres où chaque paramètre peut avoir différentes valeurs pour différentes configurations (Debug, Release, Staging).
Par défaut, Xcode crée deux configurations : Debug (pour le développement, sans optimisations) et Release (pour la production, avec optimisation -Os). Le développeur peut ajouter ses propres configurations via le menu Project > Info > Configurations.
Pour chaque configuration, les Build Settings sont configurés : flags du compilateur (OTHER_SWIFT_FLAGS, GCC_PREPROCESSOR_DEFINITIONS), code de signature (CODE_SIGN_IDENTITY), profils de provisionnement et entitlements. Xcode écrit ces paramètres dans le fichier project.pbxproj.
Pour une gestion pratique des Build Settings, les développeurs iOS utilisent des fichiers .xcconfig — des fichiers texte avec des paramètres au format KEY = VALUE. C'est l'analogue du .env pour Xcode : les valeurs sont connectées au projet et remplacent les paramètres dans project.pbxproj.
// Debug.xcconfig
BUNDLE_ID_SUFFIX = .debug
API_BASE_URL = http://localhost:8080
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG
CODE_SIGN_IDENTITY = Apple Development
// Release.xcconfig
BUNDLE_ID_SUFFIX =
API_BASE_URL = https://api.production.com
SWIFT_ACTIVE_COMPILATION_CONDITIONS =
CODE_SIGN_IDENTITY = Apple Distribution
Une partie des paramètres de Build Config va dans Info.plist — le fichier manifeste de l'application iOS. Via Info.plist, les schémas d'URL, les permissions (caméra, microphone), les modes d'arrière-plan et la configuration de connexion aux services tiers sont définis.
Les valeurs du xcconfig peuvent être substituées dans Info.plist via la syntaxe $(VARIABLE_NAME). Par exemple, $(API_BASE_URL) dans Info.plist sera développé selon la configuration de build active. Cela centralise la gestion des paramètres d'environnement pour toutes les plateformes Apple.
Dans les projets modernes, Build Config s'intègre aux systèmes d'intégration continue : GitLab CI, GitHub Actions, Bitrise, CircleCI. Chaque pipeline peut remplacer les paramètres de Build Config via les variables d'environnement du système CI/CD.
Pour Android, le pipeline CI exécute Gradle avec le Build Variant spécifié : ./gradlew assembleFullRelease. Les paramètres de signature sont passés via des variables CI : STORE_PASSWORD, KEY_ALIAS. Gradle les lit depuis l'environnement d'exécution et les substitue dans build.gradle.kts.
// build.gradle.kts — lecture depuis les variables CI
android {
signingConfigs {
register("release") {
storeFile = file(System.getenv("KEYSTORE_PATH") ?: "debug.keystore")
storePassword = System.getenv("STORE_PASSWORD") ?: ""
keyAlias = System.getenv("KEY_ALIAS") ?: "key"
keyPassword = System.getenv("KEY_PASSWORD") ?: ""
}
}
}
Pour iOS, CI utilise xcodebuild avec des flags de configuration : -configuration Release. Les certificats de signature sont fournis via les secrets CI, et les profils via l'API Apple Developer Portal ou Fastlane match.
L'outil Fastlane automatise la gestion de Build Config : génère xcconfig, met à jour les versions dans Info.plist, signe les IPA construits et les télécharge sur App Store Connect. Fastlane gym (build) et match (signature) sont la norme des pipelines CI iOS.
Selon le Bitrise Build Report (2025), les projets avec Build Config configuré dans CI réduisent le temps de configuration manuelle de build de 73% et réduisent les erreurs de signature de 89%. Build Config automatisé est un élément obligatoire d'un pipeline prêt pour la production.
Un autre aspect important est la paramétrisation du versionnage via Build Config. Gradle permet de lire versionCode et versionName depuis les variables CI et de les substituer dynamiquement dans build.gradle.kts, éliminant la désynchronisation des versions entre développeurs. Dans iOS, une tâche similaire est résolue via agvtool (Apple Generic Versioning Tool), qui peut incrémenter le numéro de build en fonction des tags git ou du numéro de build dans CI.
Questions fréquentes
Build Type (debug, release) définit comment l'application est construite : avec ou sans débogage, avec ou sans optimisation. Product Flavor (démo, complet) définit quelle version est construite : applicationId, SDK, ressources différents. Leur combinaison s'appelle Build Variant.
Via la méthode buildConfigField dans build.gradle.kts. Le champ est ajouté à la classe BuildConfig générée automatiquement et devient accessible dans le code sous la forme BuildConfig.NOM_DU_CHAMP. Pour les chaînes, la valeur doit être entourée de guillemets échappés.
Via des fichiers .xcconfig — un par environnement. Dans Project > Info > Configurations, les configurations Debug/Staging/Release sont ajoutées, chacune référençant son propre xcconfig. Les valeurs sont substituées dans Info.plist via la syntaxe $(VAR_NAME).
BuildConfig sépare la configuration de build de la logique applicative. Les flags dans le code nécessitent des modifications manuelles et une recompilation lors du changement d'environnement. BuildConfig change tous les paramètres automatiquement lors de la sélection d'un Build Variant dans l'IDE ou CI.
Oui, Gradle permet de spécifier des dépendances pour des flavors spécifiques : demoImplementation et fullImplementation. La version démo peut inclure une bibliothèque d'analyse tandis que la complète non. Cela réduit la taille de l'APK pour différents flavors.
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