Build Config în aplicațiile mobile — ce este, configurare și principiul de funcționare

Autor: IT Sectr Publicat: 2026-06-01 Timp de citire: 9 min

Build Config include parametrii de compilare: tipuri de builduri, flaguri de compilare, chei de semnare și versiuni SDK, care determină modul în care aplicația este compilată pentru diferite medii. Potrivit Android Developers Guide (2026), sistemul de compilare Gradle suportă Product Flavors și Build Types pentru o configurare flexibilă. Build Config automatizează comutarea între debug și release fără modificarea manuală a codului.

Puncte cheie

  • Build Config — un sistem de parametri de compilare care determină cum, cu ce flaguri și pentru ce platformă este compilată aplicația.
  • Gradle în Android suportă Build Types (debug, release) și Product Flavors (demo, versiune completă) cu configurații independente.
  • Xcode folosește Build Configurations (Debug, Release) și Build Settings pentru configurarea flagurilor de compilare și a semnării.
  • BuildConfig.java — o clasă generată în Android care conține câmpuri cu valorile configurației curente de compilare.
  • Automatizarea Build Config se integrează cu pipeline-urile CI/CD (GitLab CI, GitHub Actions) pentru compilarea diferitelor flavoruri.

Ce este Build Config în dezvoltarea mobilă

Build Config — este ansamblul de setări care determină procesul de compilare, construire și împachetare a aplicației mobile. Configurația de compilare include alegerea platformei țintă, a versiunii minime de SDK, a flagurilor de optimizare, a cheilor de semnare și a variabilelor de mediu.

Proiectele mobile moderne rareori au o singură configurație de compilare. De obicei sunt mai multe: debug (pentru dezvoltare cu depanare), release (pentru producție cu optimizare), staging (pentru testare cu date reale) și diferite flavoruri (demo, versiune completă, corporativă).

Potrivit sondajului Gradle Build Tool Survey (2025), în medie un proiect Android folosește 3.2 configurații de compilare diferite, iar un proiect iOS — 2.8. Fiecare configurație poate avea propriile flaguri de compilare, certificate de semnare și URL-uri ale serverelor.

Sarcina principală a Build Config este automatizarea comutării între aceste configurații. În loc să modifice manual URL-ul serverului sau flagul de depanare, dezvoltatorul selectează Build Variant-ul dorit în IDE, iar sistemul de compilare introduce parametrii corespunzători.

Configurarea corectă a Build Config influențează critic securitatea aplicației: în buildul debug sunt activate logurile detaliate, inspectorul bazei de date și endpointurile de depanare, care trebuie excluse fizic din fișierul release. Gradle rezolvă acest lucru prin Build Types: în debug poate fi setat flagul debuggable true, în release — minifyEnabled true cu ProGuard. iOS obține același rezultat prin Swift Active Compilation Conditions, unde codul din interiorul #if DEBUG nu este compilat în configurația release.

Build Config în Android: Gradle și BuildConfig

Android folosește sistemul de compilare Gradle cu două concepte-cheie: Build Types și Product Flavors. Combinația lor formează Build Variants — fiecărui variant îi corespunde o configurație completă de compilare.

Build Types: debug și release

Build Type — este configurația care determină cum este compilată aplicația. În mod implicit, Gradle creează două tipuri: debug (cu depanare, fără ofuscare) și release (cu ProGuard/R8, semnat pentru publicare). Dezvoltatorul poate adăuga propriile tipuri: staging, benchmark, qa.

kotlin
// build.gradle.kts
android {
    buildTypes {
        debug {
            isDebuggable = true
            buildConfigField("String", "API_URL", "\"http://dev.api.com\"")
        }
        release {
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
            buildConfigField("String", "API_URL", "\"https://prod.api.com\"")
        }
    }
}

Product Flavors: versiunile aplicației

Product Flavors permit crearea diferitelor versiuni ale unei singure aplicații dintr-o singură bază de cod. De exemplu: versiunea gratuită cu reclame, versiunea plătită fără reclame și versiunea corporativă cu funcționalități suplimentare. Fiecare flavor poate avea propriul applicationId, propriile resurse și dependențe SDK.

kotlin
android {
    productFlavors {
        register("demo") {
            applicationId = "com.example.app.demo"
            versionNameSuffix = "-demo"
        }
        register("full") {
            applicationId = "com.example.app"
            versionNameSuffix = ""
        }
    }
}

Clasa BuildConfig: acces din cod

Pentru fiecare Build Variant, Gradle generează clasa BuildConfig cu câmpuri de configurare. Dezvoltatorul își adaugă propriile câmpuri prin buildConfigField, iar câmpurile standard (DEBUG, APPLICATION_ID, BUILD_TYPE, VERSION_CODE, FLAVOR) sunt create automat.

kotlin
// Utilizarea BuildConfig în cod
class NetworkModule {
    fun createApiClient(): ApiClient {
        return if (BuildConfig.DEBUG) {
            ApiClient(
                baseUrl = BuildConfig.API_URL,
                interceptor = HttpLoggingInterceptor()
            )
        } else {
            ApiClient(baseUrl = BuildConfig.API_URL)
        }
    }
}

BuildConfig permite, de asemenea, activarea sau dezactivarea funcționalităților în etapa de compilare. De exemplu, se poate adăuga câmpul FEATURE_CHAT_ENABLED și se poate activa chatul doar în versiunea completă a aplicației, fără verificări la runtime și operatori condiționali în cod.

Pentru depanarea cererilor de rețea, BuildConfig cu câmpul DEBUG permite conectarea automată a HttpLoggingInterceptor în OkHttp doar pentru buildurile debug. Acest lucru garantează că în producție nicio cerere HTTP nu va fi înregistrată, chiar dacă dezvoltatorul uită accidental să elimine logarea înainte de compilarea release.

Build Config în iOS: Xcode și Build Settings

În ecosistemul iOS, Build Config este gestionat prin Xcode Build Settings — un tabel de parametri în care fiecare parametru poate avea valori diferite pentru configurații diferite (Debug, Release, Staging).

Xcode Build Configurations

În mod implicit, Xcode creează două configurații: Debug (pentru dezvoltare, fără optimizare) și Release (pentru producție, cu optimizare -Os). Dezvoltatorul poate adăuga propriile configurații prin meniul Project > Info > Configurations.

Pentru fiecare configurație sunt setate Build Settings: flaguri ale compilatorului (OTHER_SWIFT_FLAGS, GCC_PREPROCESSOR_DEFINITIONS), codul de semnare (CODE_SIGN_IDENTITY), profilele de provisioning și entitlements. Xcode salvează aceste setări în fișierul project.pbxproj.

xcconfig: fișiere de configurare externe

Pentru gestionarea convenabilă a Build Settings, dezvoltatorii iOS folosesc fișiere .xcconfig — fișiere text cu parametri în formatul KEY = VALUE. Acesta este echivalentul .env pentru Xcode: valorile sunt conectate la proiect și suprascriu setările din project.pbxproj.

env
// Debug.xcconfig
BUNDLE_ID_SUFFIX = .debug
API_BASE_URL = http://localhost:8080
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG
CODE_SIGN_IDENTITY = Apple Development

// Release.xcconfig
BUNDLE_ID_SUFFIX =
API_BASE_URL = https://api.production.com
SWIFT_ACTIVE_COMPILATION_CONDITIONS =
CODE_SIGN_IDENTITY = Apple Distribution

Info.plist: configurarea la rulare

O parte din parametrii Build Config ajung în Info.plist — fișierul manifest al aplicației iOS. Prin Info.plist se configurează schemele URL, permisiunile (camera, microfonul), modurile de fundal și configurarea autentificării prin servicii terțe.

Valorile din xcconfig pot fi introduse în Info.plist prin sintaxa $(VARIABLE_NAME). De exemplu, $(API_BASE_URL) din Info.plist se va expanda conform configurației active de compilare. Acest lucru centralizează gestionarea parametrilor de mediu pentru toate platformele Apple.

Build Config în pipeline-urile CI/CD

În proiectele moderne, Build Config se integrează cu sistemele de integrare continuă: GitLab CI, GitHub Actions, Bitrise, CircleCI. Fiecare pipeline poate suprascrie parametrii Build Config prin variabile de mediu ale sistemului CI/CD.

Gradle Build Config în CI

Pentru Android, pipeline-ul CI rulează Gradle cu specificarea Build Variant: ./gradlew assembleFullRelease. Parametrii de semnare sunt transmiși prin variabilele CI: STORE_PASSWORD, KEY_ALIAS. Gradle le citește din mediul de rulare și le introduce în build.gradle.kts.

kotlin
// build.gradle.kts — citirea din variabilele CI
android {
    signingConfigs {
        register("release") {
            storeFile = file(System.getenv("KEYSTORE_PATH") ?: "debug.keystore")
            storePassword = System.getenv("STORE_PASSWORD") ?: ""
            keyAlias = System.getenv("KEY_ALIAS") ?: "key"
            keyPassword = System.getenv("KEY_PASSWORD") ?: ""
        }
    }
}

Xcode Build Config în CI

Pentru iOS, CI folosește xcodebuild cu flaguri de configurare: -configuration Release. Certificatele de semnare sunt livrate prin secrets CI, iar profilele — prin Apple Developer Portal API sau Fastlane match.

Instrumentul Fastlane automatizează gestionarea Build Config: generează xcconfig, actualizează versiunile în Info.plist, semnează fișierele IPA compilate și le încarcă în App Store Connect. Fastlane gym (compilare) și match (semnare) — este standardul pipeline-urilor CI iOS.

Potrivit Bitrise Build Report (2025), proiectele cu Build Config configurat în CI reduc timpul de configurare manuală a compilării cu 73% și scad numărul erorilor de semnare cu 89%. Build Config automatizat — este elementul obligatoriu al unui pipeline production-ready.

Un alt aspect important — parametrizarea versionării prin Build Config. Gradle permite citirea versionCode și versionName din variabilele CI și introducerea lor dinamică în build.gradle.kts, ceea ce elimină desincronizarea versiunilor între dezvoltatori. În iOS, o sarcină similară este rezolvată prin agvtool (Apple Generic Versioning Tool), care poate incrementa numărul de build pe baza tagurilor git sau a numărului de build din CI.

Întrebări frecvente

Care este diferența dintre Build Type și Product Flavor în Android?

Build Type (debug, release) determină cum este compilată aplicația: cu depanare sau fără, cu optimizare sau fără. Product Flavor (demo, full) determină ce versiune este compilată: applicationId, SDK, resurse diferite. Combinația lor se numește Build Variant.

Cum se transmite o valoare din Build Config în codul Android?

Prin metoda buildConfigField în build.gradle.kts. Câmpul este adăugat în clasa BuildConfig generată automat și devine accesibil în cod ca BuildConfig.FIELD_NAME. Pentru șiruri de caractere, valoarea trebuie încadrată în ghilimele escape-uite.

Cum se configurează mai multe medii (development, staging, production) în iOS?

Prin fișiere .xcconfig — unul pentru fiecare mediu. În Project > Info > Configurations se adaugă configurațiile Debug/Staging/Release, fiecare referindu-se la propriul xcconfig. Valorile sunt introduse în Info.plist prin sintaxa $(VAR_NAME).

De ce să folosim BuildConfig în locul flagurilor din cod?

BuildConfig separă configurația de compilare de logica aplicației. Flagurile din cod necesită modificare manuală și recompilare la comutarea mediilor. BuildConfig comută toți parametrii automat la selectarea Build Variant în IDE sau CI.

Se pot avea dependențe diferite pentru flavoruri diferite?

Da, Gradle permite specificarea dependențelor pentru flavoruri concrete: demoImplementation și fullImplementation. Versiunea demo poate conecta o bibliotecă de analitică, iar cea completă — nu. Acest lucru reduce dimensiunea APK pentru diferite flavoruri.

Rezumat

  • Build Config — un sistem de parametri de compilare care controlează modul în care aplicația este compilată și pentru ce mediu.
  • Android folosește Gradle cu Build Types, Product Flavors și clasa generată BuildConfig pentru accesul la parametri din cod.
  • iOS folosește Xcode Build Settings și fișiere .xcconfig pentru configurarea flagurilor de compilare, a semnării și a URL-urilor serverelor.
  • Build Variant — combinația dintre Build Type și Product Flavor care creează o configurație unică de compilare cu propriile resurse.
  • Integrarea CI/CD permite transmiterea parametrilor Build Config prin variabile de mediu, eliminând configurarea manuală.
  • Fastlane și Gradle automatizează semnarea, versionarea și publicarea pentru ambele platforme.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și