Gestion de configuration dans le développement mobile : ce que c'est, quelles options et comment configurer

Auteur : IT Sectr Publié le : 2026-05-30 Temps de lecture : 8 min

La gestion de configuration est l'un des aspects les plus sous-estimés du développement mobile. D'après CloudBees (2025), 47 % des incidents en production sont liés à des configurations de build incorrectes. Une configuration correcte de Build Variant, Scheme et des fichiers .env est la clé d'un CI/CD stable et de versions prévisibles.

Points clés

  • La gestion de configuration dans les applications mobiles repose sur Build Variant (Android), Scheme (iOS) et .env (multiplateforme) — 47 % des incidents de production sont liés à des configurations incorrectes.
  • iOS utilise Scheme + .xcconfig. Scheme gère la compilation, les tests et l'archivage. .xcconfig externalise les paramètres de build dans des fichiers.
  • Les outils multiplateformes — pubspec.yaml (Flutter), Podfile (CocoaPods), .env (variables d'environnement) — centralisent la configuration.
  • Compilation conditionnelle — inclusion/exclusion de code à la compilation. #if DEBUG, BuildConfig.DEBUG — pour déboguer sans modifier le comportement de la version release.
  • Les clés API et les secrets ne doivent pas être stockés dans le code. Utilisez .env, Build Config ou un serveur proxy. Décompiler .apk/.ipa est trivial.

Gestion de configuration sous Android : Build Variant et build.gradle

Build Variant — une combinaison de Build Type (debug/release/staging) et de Product Flavor (free/paid, demo/full). Gradle crée automatiquement un variant pour chaque combinaison : freeDebug, freeRelease, paidDebug, paidRelease. Chaque variant peut avoir son propre code, ses ressources et ses dépendances — c'est le fondement de la gestion de configuration dans les applications mobiles sur Android.

Build Variant vs Product Flavor

Build Type — paramètres de build : si le débogage est activé, signature, optimisation ProGuard. debug contient par défaut debuggable=true, release — minifyEnabled=true.

Product Flavor — variante de l'application : gratuite (free), payante (paid), démo (demo). Les flavors peuvent avoir différents applicationId, ressources et dépendances SDK.

groovy
// build.gradle — configuration des flavors de produit Android
android {
    productFlavors {
        free {
            applicationId "com.example.app.free"
            versionName "1.0-free"
        }
        paid {
            applicationId "com.example.app.paid"
            versionName "1.0-paid"
        }
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt')
        }
    }
}

L'exemple crée deux flavors : free et paid. Un applicationId séparé est défini pour free — cela permet d'installer les deux applications sur un même appareil. BuildConfig est généré pour chaque variant : BuildConfig.FLAVOR = "free", BuildConfig.BUILD_TYPE = "debug". Utilisez BuildConfig dans le code pour la logique conditionnelle.

settings.gradle et Gradle KTS

settings.gradle — le fichier Gradle racine qui décrit les modules du projet.

Gradle KTS — une alternative à Groovy utilisant Kotlin DSL. KTS offre l'autocomplétion dans Android Studio et la vérification de types. Recommandé pour les nouveaux projets.

Gestion de configuration sous iOS : Scheme et .xcconfig

La gestion de configuration sous iOS repose sur Scheme — une configuration Xcode qui définit quoi et comment compiler : Build Configuration (Debug/Release), tests, analyse, archivage. Les schemes peuvent être dupliqués pour différents environnements (Development, Staging, Production). Les schemes sont stockés dans des fichiers .xcscheme dans le dossier xcshareddata.

Fichiers .xcconfig

.xcconfig — un fichier de configuration Xcode qui stocke les paramètres de build sous forme textuelle. Pour la gestion de configuration des applications mobiles, iOS utilise .xcconfig : versionnage dans Git, réutilisation entre projets, moins de paramètres manuels. Dans .xcconfig sont définis SWIFT_ACTIVE_COMPILATION_CONDITIONS, PRODUCT_BUNDLE_IDENTIFIER, CODE_SIGN_IDENTITY.

Info.plist — le fichier de métadonnées de l'application. Il stocke la version, l'identifiant, les autorisations. Info.plist peut être différent pour chaque Scheme — via Info.plist File dans Build Settings.

AndroidManifest.xml — l'équivalent Android : stocke les autorisations, les composants, les métadonnées.

Scheme vs Build Configuration

Scheme — le scénario de build (quoi faire). Build Configuration — l'ensemble de paramètres (comment faire). Un Scheme utilise une Build Configuration (Debug ou Release). Pour CI/CD : configurez l'action Archive sur Release et l'action Test sur Debug dans un même Scheme.

Gestion de configuration dans Flutter et React Native : pubspec.yaml, Podfile, .env

pubspec.yaml — le fichier de configuration du projet Flutter. Contient les dépendances, versions, ressources. Prend en charge les variables d'environnement via --dart-define.

Podfile — le gestionnaire de dépendances CocoaPods pour iOS. Définit les versions des bibliothèques et la plateforme.

.env — un fichier avec des variables d'environnement pour toutes les plateformes. Flutter et React Native utilisent une approche différente pour la gestion de configuration : dart-define dans Flutter, react-native-config dans React Native. La gestion de configuration dans les projets multiplateformes implique différents outils selon la stack.

.env et Variables d'environnement

.env — un fichier texte avec des paires clé=valeur. Ne se commit pas dans Git (ajoutez à .gitignore). Pour Flutter — flutter_dotenv, pour iOS — Config.xcconfig avec #include, pour Android — BuildConfig. Variables env : API_URL, SENTRY_DSN, APP_SECRET. Dans la gestion de configuration du développement mobile, .env est la norme de facto pour stocker les secrets en dehors du dépôt.

Podfile et pubspec.yaml

Podfile décrit les dépendances CocoaPods et la plateforme (platform :ios, '15.0'). pubspec.yaml pour Flutter — dependencies et dev_dependencies. Les deux prennent en charge les dépendances conditionnelles : pod 'Analytics', :configs => ['Release'] ou flutter pub add --flavor free. Chez IT Sectr, nous utilisons .env + BuildConfig pour les secrets et Podfile pour les dépendances natives dans les projets mobiles.

Paramètre Android iOS Flutter
Unité de configurationBuild VariantSchemeFlavor (--flavor)
Fichier de buildbuild.gradle.xcconfigpubspec.yaml
Code conditionnelBuildConfigActive Compilation Conditionsdart-define
SecretsBuildConfig/NDK.xcconfig.env/dart-define
Gestionnaire de dépendancesGradle (Maven)SPM/CocoaPodspub (dart)

Le tableau montre les principales différences de gestion de configuration entre les plateformes mobiles. Android offre plus de flexibilité via Build Variant. iOS est plus simple mais moins flexible. Flutter centralise la configuration dans dart-define, mais les dépendances natives nécessitent toujours la configuration de Podfile/build.gradle.

Compilation conditionnelle dans la gestion de configuration

Compilation conditionnelle — inclusion ou exclusion de code à la compilation en fonction de flags. Cela fait partie de la gestion de configuration : elle permet d'intégrer des outils de débogage (logging, inspecteur) dans les builds debug et de les supprimer de la release. L'implémentation diffère selon les plateformes.

Compilation conditionnelle en Swift

#if DEBUG — directive de préprocesseur Swift. Le code à l'intérieur du bloc n'est compilé qu'en configuration Debug. Autres flags : #if !RELEASE, #if targetEnvironment(simulator). Active Compilation Conditions dans Build Settings — ajoutez vos flags personnalisés via -D FLAG_NAME. La gestion de configuration des builds par conditions de compilation est une pratique standard sous iOS.

Compilation conditionnelle en Kotlin

BuildConfig.DEBUG — champ booléen, true en build debug. BuildConfig est généré automatiquement par Gradle. Pour les flags personnalisés, utilisez buildConfigField dans build.gradle : buildConfigField "boolean", "REPORT_CRASHES", "true". Dans le code : if (BuildConfig.REPORT_CRASHES) { ... }.

Compilation conditionnelle en Flutter

dart-define — flags de compilation Flutter : flutter run --dart-define=ENV=staging. Dans le code : const env = String.fromEnvironment('ENV', defaultValue: 'production'). Pour les builds conditionnels d'applications mobiles, utilisez le plugin build_runner avec génération de code.

Foire aux questions

En quoi Build Variant diffère-t-il de Product Flavor dans Android ?

Build Variant = Build Type (debug/release) + Product Flavor. Flavor est la variante de l'application (payante/gratuite, client/serveur), Build Type sont les paramètres de build (débogage/optimisation). La combinaison flavour + type forme un variant : par exemple, paidDebug.

Qu'est-ce que .xcconfig et pourquoi est-il nécessaire sous iOS ?

.xcconfig est un fichier de configuration Xcode qui stocke les paramètres de build sous forme textuelle. Il permet de déplacer les paramètres du projet Xcode vers des fichiers compatibles Git, simplifiant le CI/CD et le travail d'équipe dans les projets mobiles.

Comment stocker en toute sécurité les clés API dans une application mobile ?

Les clés API ne doivent pas être stockées dans le code — tout .apk ou .ipa peut être décompilé. Utilisez des fichiers .env, un proxy backend ou de l'obfuscation via Build Config. IT Sectr recommande de stocker les secrets sur le serveur et de les délivrer au client après authentification.

Qu'est-ce que la compilation conditionnelle et quand l'utiliser ?

La compilation conditionnelle consiste à inclure/exclure du code à la compilation en fonction de flags. En Swift — #if DEBUG, en Kotlin — BuildConfig.DEBUG. Utilisée pour activer le logging en debug et le désactiver en release. C'est un élément clé de la gestion de configuration dans le développement mobile.

Le Podfile est-il nécessaire dans un projet sans CocoaPods ?

Podfile n'est utilisé qu'avec CocoaPods. Il n'est pas nécessaire pour SPM ou Carthage. Ne laissez pas de Podfile dans un projet si vous avez abandonné CocoaPods — cela perturbe l'équipe et le système CI/CD.

Résumé

  • La gestion de configuration dans les applications mobiles est le fondement d'un CI/CD stable. Android utilise Build Variant, iOS utilise Scheme, Flutter utilise dart-define.
  • Android : Build Variant = Build Type × Product Flavor. BuildConfig est généré pour chaque variant.
  • iOS : Scheme + .xcconfig gèrent la configuration. Info.plist — métadonnées de l'application.
  • Flutter : dart-define pour les variables de build. pubspec.yaml pour les dépendances.
  • Compilation conditionnelle (#if DEBUG, BuildConfig.DEBUG) — partie de la gestion de configuration, méthode standard pour supprimer le code de débogage en release.
  • .env — stockage sécurisé des secrets hors du dépôt. Ne commitez pas .env dans Git.
  • La gestion de configuration dans les projets mobiles nécessite une attention dès le premier commit — une configuration de build correcte fait gagner des heures de débogage à chaque version.

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.

Discuter du projet