Správa konfigurací je jedním z nejvíce podceňovaných aspektů mobilního vývoje. Podle CloudBees (2025) souvisí 47% incidentů v produkci s nesprávnými konfiguracemi sestavení. Správné nastavení Build Variant, Scheme a .env souborů je klíčem ke stabilnímu CI/CD a předvídatelným vydáním.
Hlavní body
Build Variant — kombinace Build Type (debug/release/staging) a Product Flavor (free/paid, demo/full). Gradle automaticky vytváří variant pro každou kombinaci: freeDebug, freeRelease, paidDebug, paidRelease. Každý variant může mít svůj vlastní kód, zdroje a závislosti — to je základ správy konfigurací v mobilních aplikacích na Androidu.
Build Type — nastavení sestavení: zda je povoleno ladění, podepisování, optimalizace ProGuard. debug ve výchozím nastavení obsahuje debuggable=true, release — minifyEnabled=true.
Product Flavor — varianta aplikace: bezplatná (free), placená (paid), demo. Flavoury mohou mít různé applicationId, zdroje a závislosti SDK.
// build.gradle — konfigurace product flavour v 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')
}
}
}
Příklad vytváří dva flavoury: free a paid. Pro free je nastaveno samostatné applicationId — to umožňuje nainstalovat obě aplikace na jedno zařízení. BuildConfig je generován pro každý variant: BuildConfig.FLAVOR = "free", BuildConfig.BUILD_TYPE = "debug". Použijte BuildConfig v kódu pro podmíněnou logiku.
settings.gradle — kořenový soubor Gradle, který popisuje moduly projektu.
Gradle KTS — alternativa ke Groovy pomocí Kotlin DSL. KTS poskytuje automatické dokončování v Android Studio a kontrolu typů. Doporučeno pro nové projekty.
Správa konfigurací v iOS je postavena na Scheme — konfiguraci Xcode, která určuje, co a jak se sestavuje: Build Configuration (Debug/Release), testy, analýza, archivace. Scheme lze duplikovat pro různá prostředí (Development, Staging, Production). Scheme je uloženo v souboru .xcscheme ve složce xcshareddata.
.xcconfig — konfigurační soubor Xcode, který ukládá nastavení sestavení v textové podobě. Pro správu konfigurací v mobilní aplikaci iOS používá .xcconfig: verzování v Git, opětovné použití mezi projekty, méně ručního nastavení. V .xcconfig se nastavují SWIFT_ACTIVE_COMPILATION_CONDITIONS, PRODUCT_BUNDLE_IDENTIFIER, CODE_SIGN_IDENTITY.
Info.plist — soubor metadat aplikace. Ukládá verzi, identifikátor, oprávnění. Info.plist může být pro každé Scheme jiný — přes Info.plist File v Build Settings.
AndroidManifest.xml — analog pro Android: ukládá oprávnění, komponenty, metadata.
Scheme — scénář sestavení (co dělat). Build Configuration — sada nastavení (jak dělat). Jeden Scheme používá jednu Build Configuration (Debug nebo Release). Pro CI/CD: nastavte akci Archive na Release a akci Test na Debug v jednom Scheme.
pubspec.yaml — konfigurační soubor projektu Flutter. Obsahuje závislosti, verze, zdroje. Podporuje proměnné prostředí přes --dart-define.
Podfile — správce závislostí CocoaPods pro iOS. Určuje verze knihoven a platformu.
.env — soubor s proměnnými prostředí pro všechny platformy. Flutter a React Native používají odlišný přístup ke správě konfigurací: dart-define ve Flutter, react-native-config v React Native. Správa konfigurací v cross-platform projektech zahrnuje různé nástroje v závislosti na stacku.
.env — textový soubor s páry klíč=hodnota. Necommituje se do Git (přidejte do .gitignore). Pro Flutter — flutter_dotenv, pro iOS — Config.xcconfig s #include, pro Android — BuildConfig. env proměnné: API_URL, SENTRY_DSN, APP_SECRET. Ve správě konfigurací v mobilním vývoji je .env de facto standardem pro ukládání tajemství mimo repozitář.
Podfile popisuje závislosti CocoaPods a platformu (platform :ios, '15.0'). pubspec.yaml pro Flutter — dependencies a dev_dependencies. Oba podporují podmíněné závislosti: pod 'Analytics', :configs => ['Release'] nebo flutter pub add --flavor free. V IT Sectr používáme .env + BuildConfig pro tajemství a Podfile pro nativní závislosti v mobilních projektech.
| Parametr | Android | iOS | Flutter |
|---|---|---|---|
| Jednotka konfigurace | Build Variant | Scheme | Flavor (--flavor) |
| Soubor sestavení | build.gradle | .xcconfig | pubspec.yaml |
| Podmíněný kód | BuildConfig | Active Compilation Conditions | dart-define |
| Tajemství | BuildConfig/NDK | .xcconfig | .env/dart-define |
| Správce závislostí | Gradle (Maven) | SPM/CocoaPods | pub (dart) |
Tabulka ukazuje klíčové rozdíly ve správě konfigurací mezi mobilními platformami. Android poskytuje větší flexibilitu prostřednictvím Build Variant. iOS je jednodušší, ale méně flexibilní. Flutter centralizuje konfiguraci v dart-define, ale nativní závislosti stále vyžadují konfiguraci Podfile/build.gradle.
Podmíněný překlad — zahrnutí nebo vyloučení kódu v době překladu v závislosti na přepínačích. To je součástí správy konfigurací: umožňuje vložit ladicí nástroje (logování, inspektor) do debug sestavení a odstranit je z release. Implementace se liší na různých platformách.
#if DEBUG — direktiva preprocesoru Swift. Kód uvnitř bloku se překládá pouze v konfiguraci Debug. Další přepínače: #if !RELEASE, #if targetEnvironment(simulator). Active Compilation Conditions v Build Settings — přidávejte vlastní přepínače přes -D FLAG_NAME. Správa konfigurací sestavení pomocí podmínek překladu je standardní praxí v iOS.
BuildConfig.DEBUG — booleovské pole, true v debug sestavení. BuildConfig je generován automaticky Gradle. Pro vlastní přepínače použijte buildConfigField v build.gradle: buildConfigField "boolean", "REPORT_CRASHES", "true". V kódu: if (BuildConfig.REPORT_CRASHES) { ... }.
dart-define — přepínače překladu Flutter: flutter run --dart-define=ENV=staging. V kódu: const env = String.fromEnvironment('ENV', defaultValue: 'production'). Pro podmíněné sestavení mobilních aplikací použijte plugin build_runner s generováním kódu.
Často kladené otázky
Build Variant = Build Type (debug/release) + Product Flavor. Flavor je varianta aplikace (placená/bezplatná, klientská/serverová), Build Type jsou nastavení sestavení (ladění/optimalizace). Kombinace flavour + type tvoří variant: například paidDebug.
.xcconfig je konfigurační soubor Xcode, který ukládá nastavení sestavení v textové podobě. Umožňuje přesunout nastavení z projektu Xcode do souborů přátelských ke Git, což zjednodušuje CI/CD a týmovou práci v mobilních projektech.
API klíče nelze ukládat do kódu — jakýkoli .apk nebo .ipa lze dekompilovat. Použijte .env soubory, backend proxy nebo obfuskaci přes Build Config. IT Sectr doporučuje ukládat tajemství na serveru a vydávat je klientovi po autentizaci.
Podmíněný překlad je zahrnutí/vyloučení kódu v době překladu v závislosti na přepínačích. V Swift — #if DEBUG, v Kotlin — BuildConfig.DEBUG. Používá se k povolení logování v debug a zakázání v release. To je klíčový prvek správy konfigurací v mobilním vývoji.
Podfile se používá pouze při práci s CocoaPods. Pro SPM nebo Carthage není potřeba. Nenechávejte Podfile v projektu, pokud jste opustili CocoaPods — to mate tým a systém CI/CD.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.