A konfigurációkezelés a mobilfejlesztés egyik legalulértékeltebb aspektusa. A CloudBees (2025) szerint a production incidensek 47%-a hibás build konfigurációkkal kapcsolatos. A Build Variant, a Scheme és a .env fájlok helyes beállítása a stabil CI/CD és a kiszámítható kiadások kulcsa.
Főbb pontok
Build Variant — a Build Type (debug/release/staging) és a Product Flavor (free/paid, demo/full) kombinációja. A Gradle automatikusan létrehoz egy variant-ot minden kombinációhoz: freeDebug, freeRelease, paidDebug, paidRelease. Minden variant-nak saját kódja, erőforrásai és függőségei lehetnek — ez a konfigurációkezelés alapja az Android mobilalkalmazásokban.
Build Type — build beállítások: a hibakeresés engedélyezve van-e, aláírás, ProGuard optimalizálás. a debug alapértelmezetten debuggable=true-t tartalmaz, a release — minifyEnabled=true-t.
Product Flavor — alkalmazásváltozat: ingyenes (free), fizetős (paid), demo. A flavor-ok eltérő applicationId-val, erőforrásokkal és SDK függőségekkel rendelkezhetnek.
// build.gradle — Android termék flavor-ok beállítása
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')
}
}
}
A példa két flavor-t hoz létre: free és paid. A free-hez külön applicationId van beállítva — ez lehetővé teszi mindkét alkalmazás telepítését egy eszközre. A BuildConfig minden variant-hoz generálódik: BuildConfig.FLAVOR = "free", BuildConfig.BUILD_TYPE = "debug". Használja a BuildConfig-ot a kódban feltételes logikához.
settings.gradle — a gyökér Gradle fájl, amely leírja a projekt moduljait.
Gradle KTS — a Groovy alternatívája Kotlin DSL használatával. A KTS autokomplettálást biztosít az Android Studio-ban és típusellenőrzést. Új projektekhez ajánlott.
Konfigurációkezelés iOS-en a Scheme-re épül — egy Xcode konfiguráció, amely meghatározza, mit és hogyan kell építeni: Build Configuration (Debug/Release), tesztek, elemzés, archiválás. A Scheme-ek különböző környezetekhez (Development, Staging, Production) másolhatók. A Scheme-ek .xcscheme fájlokban tárolódnak az xcshareddata mappában.
.xcconfig — egy Xcode konfigurációs fájl, amely a build beállításokat szöveges formában tárolja. A mobilalkalmazás konfigurációkezeléshez az iOS .xcconfig-ot használ: verziókezelés Git-ben, újrafelhasználás projektek között, kevesebb kézi beállítás. A .xcconfig-ban állíthatók be a SWIFT_ACTIVE_COMPILATION_CONDITIONS, PRODUCT_BUNDLE_IDENTIFIER, CODE_SIGN_IDENTITY.
Info.plist — az alkalmazás metaadat fájlja. Tárolja a verziót, azonosítót, engedélyeket. Az Info.plist eltérő lehet minden Scheme-hez — az Info.plist File-on keresztül a Build Settings-ben.
AndroidManifest.xml — az Android megfelelője: engedélyeket, komponenseket, metaadatokat tárol.
Scheme — a build forgatókönyv (mit kell csinálni). Build Configuration — a beállítások halmaza (hogyan kell csinálni). Egy Scheme egy Build Configuration-t (Debug vagy Release) használ. CI/CD-hez: állítsa be az Archive műveletet Release-re és a Test műveletet Debug-ra ugyanabban a Scheme-ben.
pubspec.yaml — a Flutter projekt konfigurációs fájlja. Függőségeket, verziókat, erőforrásokat tartalmaz. Támogatja a környezeti változókat a --dart-define-on keresztül.
Podfile — a CocoaPods függőségkezelő iOS-hez. Meghatározza a könyvtár verziókat és a platformot.
.env — egy fájl környezeti változókkal minden platformhoz. A Flutter és a React Native más megközelítést használ a konfigurációkezeléshez: dart-define a Flutter-ben, react-native-config a React Native-ben. A konfigurációkezelés a platformfüggetlen projektekben különböző eszközöket foglal magában a stack-től függően.
.env — egy szöveges fájl kulcs=érték párokkal. Ne commitálja Git-be (adja hozzá a .gitignore-hoz). Flutter esetén — flutter_dotenv, iOS esetén — Config.xcconfig #include-dal, Android esetén — BuildConfig. env változók: API_URL, SENTRY_DSN, APP_SECRET. A mobilfejlesztési konfigurációkezelésben a .env a de facto szabvány a titkoknak a tárolón kívüli tárolására.
A Podfile leírja a CocoaPods függőségeket és a platformot (platform :ios, '15.0'). A pubspec.yaml a Flutter számára — dependencies és dev_dependencies. Mindkettő támogatja a feltételes függőségeket: pod 'Analytics', :configs => ['Release'] vagy flutter pub add --flavor free. Az IT Sectr-nél a .env + BuildConfig-ot használjuk titkokhoz és a Podfile-t natív függőségekhez a mobil projektekben.
| Paraméter | Android | iOS | Flutter |
|---|---|---|---|
| Konfigurációs egység | Build Variant | Scheme | Flavor (--flavor) |
| Build fájl | build.gradle | .xcconfig | pubspec.yaml |
| Feltételes kód | BuildConfig | Active Compilation Conditions | dart-define |
| Titkok | BuildConfig/NDK | .xcconfig | .env/dart-define |
| Függőségkezelő | Gradle (Maven) | SPM/CocoaPods | pub (dart) |
A táblázat a konfigurációkezelés fő különbségeit mutatja a mobil platformok között. Az Android nagyobb rugalmasságot kínál a Build Variant-en keresztül. Az iOS egyszerűbb, de kevésbé rugalmas. A Flutter központosítja a konfigurációt a dart-define-ban, de a natív függőségek továbbra is megkövetelik a Podfile/build.gradle konfigurálását.
Feltételes fordítás — kód beillesztése vagy kizárása fordítási időben a kapcsolóktól függően. Ez a konfigurációkezelés része: lehetővé teszi hibakereső eszközök (naplózás, ellenőr) beágyazását a debug build-ekbe és eltávolításukat a release-ből. A megvalósítás platformonként eltérő.
#if DEBUG — Swift előfeldolgozó direktíva. A blokkon belüli kód csak Debug konfigurációban fordul le. Egyéb kapcsolók: #if !RELEASE, #if targetEnvironment(simulator). Active Compilation Conditions a Build Settings-ben — adjon hozzá egyedi kapcsolókat a -D FLAG_NAME segítségével. A build konfigurációkezelés fordítási feltételeken keresztül szabványos gyakorlat iOS-en.
BuildConfig.DEBUG — logikai mező, true a debug build-ben. A BuildConfig-ot a Gradle automatikusan generálja. Egyedi kapcsolókhoz használja a buildConfigField-ot a build.gradle-ben: buildConfigField "boolean", "REPORT_CRASHES", "true". A kódban: if (BuildConfig.REPORT_CRASHES) { ... }.
dart-define — Flutter fordítási kapcsolók: flutter run --dart-define=ENV=staging. A kódban: const env = String.fromEnvironment('ENV', defaultValue: 'production'). Feltételes mobilalkalmazás build-ekhez használja a build_runner bővítményt kódgenerálással.
Gyakran Ismételt Kérdések
Build Variant = Build Type (debug/release) + Product Flavor. A Flavor az alkalmazás változata (fizetős/ingyenes, kliens/szerver), a Build Type a build beállításai (hibakeresés/optimalizálás). A flavour + type kombinációja alkot egy variant-ot: például paidDebug.
.xcconfig egy Xcode konfigurációs fájl, amely a build beállításokat szöveges formában tárolja. Lehetővé teszi a beállítások áthelyezését az Xcode projektből Git-barát fájlokba, egyszerűsítve a CI/CD-t és a csapatmunkát a mobil projektekben.
API kulcsok nem tárolhatók a kódban — bármely .apk vagy .ipa visszafejthető. Használjon .env fájlokat, backend proxy-t vagy obfuszkációt Build Config-on keresztül. Az IT Sectr azt javasolja, hogy a titkokat a szerveren tárolja, és authentikáció után adja ki a kliensnek.
A feltételes fordítás kód beillesztése/kizárása fordítási időben a kapcsolóktól függően. Swift-ben — #if DEBUG, Kotlin-ban — BuildConfig.DEBUG. A naplózás engedélyezésére szolgál debug-ban és letiltására release-ben. Ez a konfigurációkezelés kulcseleme a mobilfejlesztésben.
Podfile csak CocoaPods használatakor szükséges. Nem kell SPM-hez vagy Carthage-hoz. Ne hagyjon Podfile-t a projektben, ha elhagyta a CocoaPods-ot — ez összezavarja a csapatot és a CI/CD rendszert.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.