Build Config обухвата параметре билдовања: типове билдова, флагове компилације, кључеве потписивања и верзије SDK-а, који одређују како се апликација компајлира за различита окружења. Према Android Developers Guide (2026), систем за билдовање Gradle подржава Product Flavors и Build Types за флексибилно конфигурисање. Build Config аутоматизује пребацивање између debug и release без ручне измене кода.
Кључно
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 конфигурацији.
Android користи систем за билдовање Gradle са два кључна појма: Build Types и Product Flavors. Њихова комбинација формира Build Variants — сваком варијанту одговара сопствена пуна конфигурација билдовања.
Build Type — конфигурација која одређује како се компајлира апликација. Подразумевано Gradle ствара два типа: debug (са отклањањем грешака, без обфускације) и release (са ProGuard/R8, потписан за објављивање). Програмер може додавати сопствене типове: staging, benchmark, qa.
// 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 омогућавају стварање различитих верзија једне апликације из исте базе кода. На пример: бесплатна верзија са огласима, плаћена без огласа и корпоративна са додатним функцијама. Сваки флејвор може имати сопствени applicationId, ресурсе и SDK зависности.
android {
productFlavors {
register("demo") {
applicationId = "com.example.app.demo"
versionNameSuffix = "-demo"
}
register("full") {
applicationId = "com.example.app"
versionNameSuffix = ""
}
}
}
За сваки Build Variant Gradle генерише класу BuildConfig са пољима конфигурације. Програмер додаје сопствена поља кроз buildConfigField, а стандардна поља (DEBUG, APPLICATION_ID, BUILD_TYPE, VERSION_CODE, FLAVOR) се стварају аутоматски.
// Коришћење 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 верзије.
У iOS екосистему Build Config се управља кроз Xcode Build Settings — табелу параметара у којој сваки параметар може имати различите вредности за различите конфигурације (Debug, Release, Staging).
Подразумевано Xcode ствара две конфигурације: Debug (за развој, без оптимизација) и Release (за продукцију, са оптимизацијом -Os). Програмер може додавати сопствене конфигурације кроз мени Project > Info > Configurations.
За сваку конфигурацију подешавају се Build Settings: флагови компајлера (OTHER_SWIFT_FLAGS, GCC_PREPROCESSOR_DEFINITIONS), код потписивања (CODE_SIGN_IDENTITY), provisioning профили и entitlements. Xcode чува ова подешавања у фајлу project.pbxproj.
За практично управљање Build Settings-има, iOS програмери користе .xcconfig фајлове — текстуалне фајлове са параметрима у формату KEY = VALUE. Ово је аналог .env-а за Xcode: вредности се повезују са пројектом и преписују подешавања у project.pbxproj.
// 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
Део параметара Build Config-а улази у Info.plist — манифест фајл iOS апликације. Кроз Info.plist се подешавају URL шеме, дозволе (камера, микрофон), позадински режими и конфигурација пријављивања кроз услуге трећих страна.
Вредности из xcconfig-а могу се убацити у Info.plist кроз синтаксу $(VARIABLE_NAME). На пример, $(API_BASE_URL) у Info.plist-у биће проширено у складу са активном конфигурацијом билдовања. Ово централизује управљање параметрима окружења за све Apple платформе.
У савременим пројектима Build Config се интегрише са системима континуиране интеграције: GitLab CI, GitHub Actions, Bitrise, CircleCI. Сваки пајплајн може преписивати параметре Build Config-а кроз променљиве окружења CI/CD система.
За Android, CI пајплајн покреће Gradle са назнаком Build Variant-а: ./gradlew assembleFullRelease. Параметри потписивања се преносе кроз CI променљиве: STORE_PASSWORD, KEY_ALIAS. Gradle их чита из извршног окружења и убацује у build.gradle.kts.
// 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") ?: ""
}
}
}
За 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 (debug, release) одређује како се компајлира апликација: са отклањањем грешака или без, са оптимизацијом или без. Product Flavor (demo, full) одређује која верзија се компајлира: различити applicationId, SDK, ресурси. Њихова комбинација се назива Build Variant.
Кроз метод buildConfigField у build.gradle.kts. Поље се додаје у аутоматски генерисану класу BuildConfig и постаје доступно у коду као BuildConfig.FIELD_NAME. За стрингове вредност треба умотати у ескјпиране наводнике.
Кроз .xcconfig фајлове — по један за свако окружење. У Project > Info > Configurations додају се конфигурације Debug/Staging/Release, свака упућује на свој xcconfig. Вредности се убацују у Info.plist кроз синтаксу $(VAR_NAME).
BuildConfig одваја конфигурацију билдовања од логике апликације. Флагови у коду захтевају ручну измену и поновну компилацију приликом пребацивања окружења. BuildConfig пребацује све параметре аутоматски при избору Build Variant-а у IDE-у или CI.
Да, Gradle омогућава навођење зависности за конкретне флејворе: demoImplementation и fullImplementation. Демо верзија може повезати библиотеку за аналитику, а пуна — не. То смањује величину APK-а за различите флејворе.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође