Configuratiebeheer in mobiele ontwikkeling: wat het is, welke opties en hoe in te stellen

Auteur: IT Sectr Gepubliceerd: 2026-05-30 Leestijd: 8 min

Configuratiebeheer is een van de meest onderschatte aspecten van mobiele ontwikkeling. Volgens CloudBees (2025) is 47% van de incidenten in productie gerelateerd aan onjuiste buildconfiguraties. Het juist instellen van Build Variant, Scheme en .env-bestanden is de sleutel tot stabiele CI/CD en voorspelbare releases.

Belangrijkste punten

  • Configuratiebeheer in mobiele apps is gebaseerd op Build Variant (Android), Scheme (iOS) en .env (cross-platform) — 47% van de productie-incidenten is gerelateerd aan onjuiste instellingen.
  • iOS gebruikt Scheme + .xcconfig. Scheme beheert het bouwen, testen en archiveren. .xcconfig verplaatst buildinstellingen naar bestanden.
  • Cross-platform tools — pubspec.yaml (Flutter), Podfile (CocoaPods), .env (omgevingsvariabelen) — centraliseren configuratie.
  • Conditionele compilatie — code opnemen/uitsluiten tijdens compilatie. #if DEBUG, BuildConfig.DEBUG — voor debuggen zonder het gedrag van de release te wijzigen.
  • API-sleutels en geheimen mogen niet in code worden opgeslagen. Gebruik .env, Build Config of een proxyserver. Het decomplileren van .apk/.ipa is triviaal.

Configuratiebeheer in Android: Build Variant en build.gradle

Build Variant — een combinatie van Build Type (debug/release/staging) en Product Flavor (free/paid, demo/full). Gradle maakt automatisch een variant voor elke combinatie: freeDebug, freeRelease, paidDebug, paidRelease. Elke variant kan zijn eigen code, resources en afhankelijkheden hebben — dit is de basis van configuratiebeheer in mobiele apps op Android.

Build Variant vs Product Flavor

Build Type — buildinstellingen: of debuggen is ingeschakeld, ondertekenen, ProGuard-optimalisatie. debug bevat standaard debuggable=true, release — minifyEnabled=true.

Product Flavor — app-variant: gratis (free), betaald (paid), demo. Flavors kunnen verschillende applicationId, resources en SDK-afhankelijkheden hebben.

groovy
// build.gradle — configuratie van product flavors in 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')
        }
    }
}

Het voorbeeld maakt twee flavors: free en paid. Voor free is een aparte applicationId ingesteld — dit maakt het mogelijk beide apps op één apparaat te installeren. BuildConfig wordt gegenereerd voor elke variant: BuildConfig.FLAVOR = "free", BuildConfig.BUILD_TYPE = "debug". Gebruik BuildConfig in code voor conditionele logica.

settings.gradle en Gradle KTS

settings.gradle — het root Gradle-bestand dat de projectmodules beschrijft.

Gradle KTS — een alternatief voor Groovy met Kotlin DSL. KTS biedt automatisch aanvullen in Android Studio en typecontrole. Aanbevolen voor nieuwe projecten.

Configuratiebeheer in iOS: Scheme en .xcconfig

Configuratiebeheer in iOS is gebaseerd op Scheme — een Xcode-configuratie die bepaalt wat en hoe te bouwen: Build Configuration (Debug/Release), tests, analyse, archivering. Schemes kunnen worden gedupliceerd voor verschillende omgevingen (Development, Staging, Production). Schemes worden opgeslagen in .xcscheme-bestanden in de map xcshareddata.

.xcconfig-bestanden

.xcconfig — een Xcode-configuratiebestand dat buildinstellingen in tekstvorm opslaat. Voor configuratiebeheer van mobiele apps gebruikt iOS .xcconfig: versiebeheer in Git, herbruikbaarheid tussen projecten, minder handmatige instellingen. In .xcconfig worden SWIFT_ACTIVE_COMPILATION_CONDITIONS, PRODUCT_BUNDLE_IDENTIFIER, CODE_SIGN_IDENTITY ingesteld.

Info.plist — het metadatabestand van de app. Het slaat de versie, identifier en rechten op. Info.plist kan voor elk Scheme verschillend zijn — via Info.plist File in Build Settings.

AndroidManifest.xml — het Android-equivalent: slaat rechten, componenten en metadata op.

Scheme vs Build Configuration

Scheme — het bouwscenario (wat te doen). Build Configuration — de set instellingen (hoe te doen). Eén Scheme gebruikt één Build Configuration (Debug of Release). Voor CI/CD: configureer de Archive-actie op Release en de Test-actie op Debug in hetzelfde Scheme.

Configuratiebeheer in Flutter en React Native: pubspec.yaml, Podfile, .env

pubspec.yaml — het configuratiebestand van het Flutter-project. Bevat afhankelijkheden, versies, resources. Ondersteunt omgevingsvariabelen via --dart-define.

Podfile — de CocoaPods-afhankelijkheidsbeheerder voor iOS. Bepaalt bibliotheekversies en platform.

.env — een bestand met omgevingsvariabelen voor alle platforms. Flutter en React Native gebruiken een andere benadering voor configuratiebeheer: dart-define in Flutter, react-native-config in React Native. Configuratiebeheer in cross-platform projecten omvat verschillende tools afhankelijk van de stack.

.env en Omgevingsvariabelen

.env — een tekstbestand met sleutel=waarde paren. Niet committen naar Git (toevoegen aan .gitignore). Voor Flutter — flutter_dotenv, voor iOS — Config.xcconfig met #include, voor Android — BuildConfig. env-variabelen: API_URL, SENTRY_DSN, APP_SECRET. In configuratiebeheer bij mobiele ontwikkeling is .env de facto standaard voor het opslaan van geheimen buiten de repository.

Podfile en pubspec.yaml

Podfile beschrijft CocoaPods-afhankelijkheden en platform (platform :ios, '15.0'). pubspec.yaml voor Flutter — dependencies en dev_dependencies. Beide ondersteunen conditionele afhankelijkheden: pod 'Analytics', :configs => ['Release'] of flutter pub add --flavor free. Bij IT Sectr gebruiken we .env + BuildConfig voor geheimen en Podfile voor native afhankelijkheden in mobiele projecten.

Parameter Android iOS Flutter
Configuratie-eenheidBuild VariantSchemeFlavor (--flavor)
Buildbestandbuild.gradle.xcconfigpubspec.yaml
Conditionele codeBuildConfigActive Compilation Conditionsdart-define
GeheimenBuildConfig/NDK.xcconfig.env/dart-define
AfhankelijkheidsbeheerderGradle (Maven)SPM/CocoaPodspub (dart)

De tabel toont de belangrijkste verschillen in configuratiebeheer tussen mobiele platforms. Android biedt meer flexibiliteit via Build Variant. iOS is eenvoudiger maar minder flexibel. Flutter centraliseert configuratie in dart-define, maar native afhankelijkheden vereisen nog steeds configuratie van Podfile/build.gradle.

Conditionele compilatie in configuratiebeheer

Conditionele compilatie — code opnemen of uitsluiten tijdens compilatie afhankelijk van vlaggen. Dit is onderdeel van configuratiebeheer: het maakt het mogelijk om debugtools (loggen, inspector) in debug-builds in te bedden en ze uit release te verwijderen. Implementatie verschilt per platform.

Conditionele compilatie in Swift

#if DEBUG — Swift-preprocessordirective. Code binnen het blok wordt alleen gecompileerd in Debug-configuratie. Andere vlaggen: #if !RELEASE, #if targetEnvironment(simulator). Active Compilation Conditions in Build Settings — voeg aangepaste vlaggen toe via -D FLAG_NAME. Configuratiebeheer van builds via compilatievoorwaarden is standaardpraktijk in iOS.

Conditionele compilatie in Kotlin

BuildConfig.DEBUG — booleaans veld, true in debug-build. BuildConfig wordt automatisch gegenereerd door Gradle. Gebruik voor aangepaste vlaggen buildConfigField in build.gradle: buildConfigField "boolean", "REPORT_CRASHES", "true". In code: if (BuildConfig.REPORT_CRASHES) { ... }.

Conditionele compilatie in Flutter

dart-define — Flutter-compilatievlaggen: flutter run --dart-define=ENV=staging. In code: const env = String.fromEnvironment('ENV', defaultValue: 'production'). Gebruik voor conditionele mobiele app-builds de build_runner-plugin met codegeneratie.

Veelgestelde vragen

Hoe verschilt Build Variant van Product Flavor in Android?

Build Variant = Build Type (debug/release) + Product Flavor. Flavor is de app-variant (betaald/gratis, client/server), Build Type zijn de buildinstellingen (debug/optimalisatie). De combinatie flavour + type vormt een variant: bijvoorbeeld paidDebug.

Wat is .xcconfig en waarom is het nodig in iOS?

.xcconfig is een Xcode-configuratiebestand dat buildinstellingen in tekstvorm opslaat. Het maakt het mogelijk om instellingen van het Xcode-project naar Git-vriendelijke bestanden te verplaatsen, waardoor CI/CD en teamwerk in mobiele projecten worden vereenvoudigd.

Hoe bewaar je API-sleutels veilig in een mobiele app?

API-sleutels mogen niet in code worden opgeslagen — elke .apk of .ipa kan worden gedecompileerd. Gebruik .env-bestanden, een backend-proxy of obfuscatie via Build Config. IT Sectr raadt aan om geheimen op de server op te slaan en ze aan de client te verstrekken na authenticatie.

Wat is conditionele compilatie en wanneer gebruik je het?

Conditionele compilatie is het opnemen/uitsluiten van code tijdens compilatie afhankelijk van vlaggen. In Swift — #if DEBUG, in Kotlin — BuildConfig.DEBUG. Wordt gebruikt om loggen in debug in te schakelen en uit te schakelen in release. Dit is een sleutelelement van configuratiebeheer in mobiele ontwikkeling.

Is Podfile nodig in een project zonder CocoaPods?

Podfile wordt alleen gebruikt bij het werken met CocoaPods. Het is niet nodig voor SPM of Carthage. Laat Podfile niet in een project achter als je CocoaPods hebt verlaten — het verwart het team en het CI/CD-systeem.

Samenvatting

  • Configuratiebeheer in mobiele apps is de basis van stabiele CI/CD. Android gebruikt Build Variant, iOS gebruikt Scheme, Flutter gebruikt dart-define.
  • Android: Build Variant = Build Type × Product Flavor. BuildConfig wordt gegenereerd voor elke variant.
  • iOS: Scheme + .xcconfig beheren configuratie. Info.plist — app-metadata.
  • Flutter: dart-define voor buildvariabelen. pubspec.yaml voor afhankelijkheden.
  • Conditionele compilatie (#if DEBUG, BuildConfig.DEBUG) — onderdeel van configuratiebeheer, standaardmanier om debug-code in release te verwijderen.
  • .env — veilige opslag van geheimen buiten de repository. Commit .env niet naar Git.
  • Configuratiebeheer in mobiele projecten vereist aandacht vanaf de eerste commit — de juiste build-instelling bespaart uren debuggen bij elke release.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project