Build Config у мобилним апликацијама — шта је то, подешавање и принцип рада

Аутор: IT Sectr Објављено: 2026-06-01 Време читања: 9 мин

Build Config обухвата параметре билдовања: типове билдова, флагове компилације, кључеве потписивања и верзије SDK-а, који одређују како се апликација компајлира за различита окружења. Према Android Developers Guide (2026), систем за билдовање Gradle подржава Product Flavors и Build Types за флексибилно конфигурисање. Build Config аутоматизује пребацивање између debug и release без ручне измене кода.

Кључно

  • Build Config — систем параметара билдовања који одређује како, са којим флаговима и за коју платформу се компајлира апликација.
  • Gradle у Android-у подржава Build Types (debug, release) и Product Flavors (демо, пуна верзија) са независним конфигурацијама.
  • Xcode користи Build Configurations (Debug, Release) и Build Settings за подешавање флагова компилације и потписивања.
  • BuildConfig.java — генерисана класа у Android-у која садржи поља са вредностима тренутне конфигурације билдовања.
  • Аутоматизација Build Config се интегрише са CI/CD пајплајновима (GitLab CI, GitHub Actions) за билдовање различитих флејвора.

Шта је Build Config у мобилном развоју

Build Config — скуп подешавања који одређује процес компајлирања, билдовања и паковања мобилне апликације. Конфигурација билдовања укључује избор циљне платформе, минималне верзије SDK-а, флагова оптимизације, кључева потписивања и променљивих окружења.

Савремени мобилни пројекти ретко имају јединствену конфигурацију билдовања. Обично их има више: debug (за развој са отклањањем грешака), release (за продукцију са оптимизацијом), staging (за тестирање са продукционим подацима) и различити флејвори (демо, пуна, корпоративна верзија).

Према анкети Gradle Build Tool Survey (2025), просечан Android пројекат користи 3.2 различите конфигурације билдовања, а iOS пројекат — 2.8. Свака конфигурација може имати сопствене флагове компилације, сертификате за потписивање и URL адресе сервера.

Главни задатак Build Config-а је аутоматизација пребацивања између ових конфигурација. Уместо ручне измене URL адресе сервера или флага за отклањање грешака, програмер бира жељени Build Variant у IDE-у, а систем за билдовање убацује одговарајуће параметре.

Правилно подешавање Build Config-а критично утиче на безбедност апликације: у debug билду су укључени детаљни логови, инспектор базе података и дебаг ендпоинти, који морају бити физички искључени из release бинарног фајла. Gradle то решава кроз Build Types: у debug-у може бити постављен флаг debuggable true, у release-у — minifyEnabled true са ProGuard-ом. iOS постиже исто кроз Swift Active Compilation Conditions, где се код унутар #if DEBUG не компајлира у release конфигурацији.

Build Config у Android-у: Gradle и BuildConfig

Android користи систем за билдовање Gradle са два кључна појма: Build Types и Product Flavors. Њихова комбинација формира Build Variants — сваком варијанту одговара сопствена пуна конфигурација билдовања.

Build Types: debug и release

Build Type — конфигурација која одређује како се компајлира апликација. Подразумевано Gradle ствара два типа: debug (са отклањањем грешака, без обфускације) и release (са ProGuard/R8, потписан за објављивање). Програмер може додавати сопствене типове: 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: верзије апликације

Product Flavors омогућавају стварање различитих верзија једне апликације из исте базе кода. На пример: бесплатна верзија са огласима, плаћена без огласа и корпоративна са додатним функцијама. Сваки флејвор може имати сопствени applicationId, ресурсе и SDK зависности.

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

Класа BuildConfig: приступ из кода

За сваки Build Variant Gradle генерише класу BuildConfig са пољима конфигурације. Програмер додаје сопствена поља кроз buildConfigField, а стандардна поља (DEBUG, APPLICATION_ID, BUILD_TYPE, VERSION_CODE, FLAVOR) се стварају аутоматски.

kotlin
// Коришћење BuildConfig-а у коду
class NetworkModule {
    fun createApiClient(): ApiClient {
        return if (BuildConfig.DEBUG) {
            ApiClient(
                baseUrl = BuildConfig.API_URL,
                interceptor = HttpLoggingInterceptor()
            )
        } else {
            ApiClient(baseUrl = BuildConfig.API_URL)
        }
    }
}

BuildConfig такође омогућава укључивање или искључивање функционалности у фази билдовања. На пример, може се додати поље FEATURE_CHAT_ENABLED и омогућити ћаскање само у пуној верзији апликације, без runtime провера и условних оператора у коду.

За отклањање грешака у мрежним захтевима, BuildConfig са пољем DEBUG омогућава аутоматско повезивање HttpLoggingInterceptor-а у OkHttp само за debug билдове. То гарантује да у продукцији ниједан HTTP захтев неће бити евидентиран, чак и ако програмер случајно заборави да уклони логовање пре компајлирања release верзије.

Build Config у iOS-у: Xcode и Build Settings

У iOS екосистему Build Config се управља кроз Xcode Build Settings — табелу параметара у којој сваки параметар може имати различите вредности за различите конфигурације (Debug, Release, Staging).

Xcode Build Configurations

Подразумевано Xcode ствара две конфигурације: Debug (за развој, без оптимизација) и Release (за продукцију, са оптимизацијом -Os). Програмер може додавати сопствене конфигурације кроз мени Project > Info > Configurations.

За сваку конфигурацију подешавају се Build Settings: флагови компајлера (OTHER_SWIFT_FLAGS, GCC_PREPROCESSOR_DEFINITIONS), код потписивања (CODE_SIGN_IDENTITY), provisioning профили и entitlements. Xcode чува ова подешавања у фајлу project.pbxproj.

xcconfig: спољашњи конфигурациони фајлови

За практично управљање Build Settings-има, iOS програмери користе .xcconfig фајлове — текстуалне фајлове са параметрима у формату KEY = VALUE. Ово је аналог .env-а за Xcode: вредности се повезују са пројектом и преписују подешавања у 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: конфигурација у време извршавања

Део параметара Build Config-а улази у Info.plist — манифест фајл iOS апликације. Кроз Info.plist се подешавају URL шеме, дозволе (камера, микрофон), позадински режими и конфигурација пријављивања кроз услуге трећих страна.

Вредности из xcconfig-а могу се убацити у Info.plist кроз синтаксу $(VARIABLE_NAME). На пример, $(API_BASE_URL) у Info.plist-у биће проширено у складу са активном конфигурацијом билдовања. Ово централизује управљање параметрима окружења за све Apple платформе.

Build Config у CI/CD пајплајновима

У савременим пројектима Build Config се интегрише са системима континуиране интеграције: GitLab CI, GitHub Actions, Bitrise, CircleCI. Сваки пајплајн може преписивати параметре Build Config-а кроз променљиве окружења CI/CD система.

Gradle Build Config у CI

За Android, CI пајплајн покреће Gradle са назнаком Build Variant-а: ./gradlew assembleFullRelease. Параметри потписивања се преносе кроз CI променљиве: STORE_PASSWORD, KEY_ALIAS. Gradle их чита из извршног окружења и убацује у build.gradle.kts.

kotlin
// build.gradle.kts — читање из 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 у CI

За iOS, CI користи xcodebuild са флаговима конфигурације: -configuration Release. Сертификати за потписивање се испоручују кроз CI secrets, а профили — кроз Apple Developer Portal API или Fastlane match.

Алат Fastlane аутоматизује управљање Build Config-ом: генерише xcconfig, ажурира верзије у Info.plist-у, потписује компајлиране IPA фајлове и учитава их у App Store Connect. Fastlane gym (компајлирање) и match (потписивање) — стандард су iOS CI пајплајнова.

Према Bitrise Build Report (2025), пројекти са подешеним Build Config-ом у CI смањују време ручног подешавања билда за 73% и смањују број грешака при потписивању за 89%. Аутоматизовани Build Config — обавезан елемент production-ready пајплајна.

Још један важан аспект — параметризација верзионисања кроз Build Config. Gradle омогућава читање versionCode-а и versionName-а из CI променљивих и динамичко убацивање у build.gradle.kts, што елиминише десинхронизацију верзија између програмера. У iOS-у сличан задатак решава agvtool (Apple Generic Versioning Tool), који може увећати број билда на основу git тагова или броја билда у CI.

Често постављана питања

Која је разлика између Build Type-а и Product Flavor-а у Android-у?

Build Type (debug, release) одређује како се компајлира апликација: са отклањањем грешака или без, са оптимизацијом или без. Product Flavor (demo, full) одређује која верзија се компајлира: различити applicationId, SDK, ресурси. Њихова комбинација се назива Build Variant.

Како пренети вредност из Build Config-а у Android код?

Кроз метод buildConfigField у build.gradle.kts. Поље се додаје у аутоматски генерисану класу BuildConfig и постаје доступно у коду као BuildConfig.FIELD_NAME. За стрингове вредност треба умотати у ескјпиране наводнике.

Како подесити више окружења (development, staging, production) у iOS-у?

Кроз .xcconfig фајлове — по један за свако окружење. У Project > Info > Configurations додају се конфигурације Debug/Staging/Release, свака упућује на свој xcconfig. Вредности се убацују у Info.plist кроз синтаксу $(VAR_NAME).

Зашто користити BuildConfig уместо флагова у коду?

BuildConfig одваја конфигурацију билдовања од логике апликације. Флагови у коду захтевају ручну измену и поновну компилацију приликом пребацивања окружења. BuildConfig пребацује све параметре аутоматски при избору Build Variant-а у IDE-у или CI.

Могу ли се имати различите зависности за различите флејворе?

Да, Gradle омогућава навођење зависности за конкретне флејворе: demoImplementation и fullImplementation. Демо верзија може повезати библиотеку за аналитику, а пуна — не. То смањује величину APK-а за различите флејворе.

Резиме

  • Build Config — систем параметара билдовања који управља тиме како се апликација компајлира и за које окружење.
  • Android користи Gradle са Build Types, Product Flavors и генерисаном класом BuildConfig за приступ параметрима из кода.
  • iOS користи Xcode Build Settings и .xcconfig фајлове за подешавање флагова компилације, потписивања и URL адреса сервера.
  • Build Variant — комбинација Build Type-а и Product Flavor-а која ствара јединствену конфигурацију билдовања са сопственим ресурсима.
  • CI/CD интеграција омогућава пренос параметара Build Config-а кроз променљиве окружења, искључујући ручно подешавање.
  • Fastlane и Gradle аутоматизују потписивање, верзионисање и објављивање за обе платформе.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође