Správa konfigurací v mobilním vývoji: co to je, jaké možnosti a jak nastavit

Autor: IT Sectr Publikováno: 2026-05-30 Doba čtení: 8 min

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

  • Správa konfigurací v mobilních aplikacích je postavena na Build Variant (Android), Scheme (iOS) a .env (cross-platform) — 47% produkčních incidentů souvisí s nesprávnými nastaveními.
  • iOS používá Scheme + .xcconfig. Scheme spravuje sestavování, testování a archivaci. .xcconfig přesouvá nastavení sestavení do souborů.
  • Nástroje pro cross-platform — pubspec.yaml (Flutter), Podfile (CocoaPods), .env (proměnné prostředí) — centralizují konfiguraci.
  • Podmíněný překlad — zahrnutí/vyloučení kódu v době překladu. #if DEBUG, BuildConfig.DEBUG — pro ladění bez změny chování vydání.
  • API klíče a tajemství nelze ukládat do kódu. Použijte .env, Build Config nebo proxy server. Dekompilace .apk/.ipa je triviální.

Správa konfigurací v Android: Build Variant a build.gradle

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 Variant vs Product Flavor

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.

groovy
// 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 a Gradle KTS

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: Scheme a .xcconfig

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.

Soubory .xcconfig

.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 vs Build Configuration

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.

Správa konfigurací ve Flutter a React Native: pubspec.yaml, Podfile, .env

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 a Proměnné Prostředí

.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 a pubspec.yaml

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 konfiguraceBuild VariantSchemeFlavor (--flavor)
Soubor sestaveníbuild.gradle.xcconfigpubspec.yaml
Podmíněný kódBuildConfigActive Compilation Conditionsdart-define
TajemstvíBuildConfig/NDK.xcconfig.env/dart-define
Správce závislostíGradle (Maven)SPM/CocoaPodspub (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 ve správě konfigurací

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.

Podmíněný překlad v Swift

#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.

Podmíněný překlad v Kotlin

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) { ... }.

Podmíněný překlad ve Flutter

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

Čím se Build Variant liší od Product Flavor v Android?

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.

Co je .xcconfig a proč je potřeba v iOS?

.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.

Jak bezpečně ukládat API klíče v mobilní aplikaci?

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.

Co je podmíněný překlad a kdy ho použít?

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.

Je Podfile potřeba v projektu bez CocoaPods?

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í

  • Správa konfigurací v mobilních aplikacích je základem stabilního CI/CD. Android používá Build Variant, iOS používá Scheme, Flutter používá dart-define.
  • Android: Build Variant = Build Type × Product Flavor. BuildConfig je generován pro každý variant.
  • iOS: Scheme + .xcconfig spravují konfiguraci. Info.plist — metadata aplikace.
  • Flutter: dart-define pro proměnné sestavení. pubspec.yaml pro závislosti.
  • Podmíněný překlad (#if DEBUG, BuildConfig.DEBUG) — součást správy konfigurací, standardní způsob odstranění ladicího kódu v release.
  • .env — bezpečné ukládání tajemství mimo repozitář. Necommitujte .env do Git.
  • Správě konfigurací v mobilních projektech je třeba věnovat pozornost od prvního commitu — správné nastavení sestavení šetří hodiny ladění při každém vydání.

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í.

Prodiskutovat projekt