A Build Config magában foglalja a buildparamétereket: buildtípusok, fordítási flagok, aláírási kulcsok és SDK-verziók, amelyek meghatározzák, hogyan készül az alkalmazás különböző környezetekhez. A Android Developers Guide (2026) szerint a Gradle buildrendszer a Product Flavors és Build Types használatával rugalmas konfigurációt tesz lehetővé. A Build Config automatizálja a debug és release közötti váltást a kód manuális módosítása nélkül.
Főbb pontok
Build Config — a beállítások összessége, amely meghatározza a mobilalkalmazás fordításának, építésének és csomagolásának folyamatát. A buildkonfiguráció magában foglalja a célplatform kiválasztását, a minimális SDK-verziót, az optimalizálási flagokat, az aláírási kulcsokat és a környezeti változókat.
A modern mobilprojektek ritkán rendelkeznek egyetlen buildkonfigurációval. Általában több van belőlük: debug (fejlesztéshez hibakereséssel), release (éles környezethez optimalizálással), staging (teszteléshez éles adatokkal) és különböző flavorok (demo, teljes, vállalati verziók).
A Gradle Build Tool Survey (2025) felmérése szerint egy átlagos Android-projekt 3.2 különböző buildkonfigurációt használ, egy iOS-projekt pedig — 2.8. Minden konfiguráció rendelkezhet saját fordítási flagokkal, aláírási tanúsítványokkal és szerver-URL-ekkel.
A Build Config fő feladata az ezen konfigurációk közötti váltás automatizálása. Ahelyett, hogy manuálisan módosítaná a szerver URL-jét vagy a debug flaget, a fejlesztő kiválasztja a kívánt Build Variant-ot az IDE-ben, és a buildrendszer beilleszti a megfelelő paramétereket.
A Build Config helyes beállítása kritikus hatással van az alkalmazás biztonságára: a debug buildben részletes naplók, adatbázis-inspector és debug endpointok vannak bekapcsolva, amelyeket fizikailag ki kell zárni a release binárisból. A Gradle ezt Build Types-on keresztül oldja meg: debug esetén a debuggable true flag állítható be, release esetén — a minifyEnabled true a ProGuard-dal. Az iOS ugyanezt a Swift Active Compilation Conditions segítségével éri el, ahol a #if DEBUG blokkon belüli kód nem fordul le a release konfigurációban.
Az Android a Gradle buildrendszert használja két kulcsfogalommal: Build Types és Product Flavors. Kombinációjuk Build Variants-t hoz létre — minden varianthoz teljes buildkonfiguráció tartozik.
Build Type — az a konfiguráció, amely meghatározza, hogyan készül az alkalmazás. Alapértelmezésben a Gradle két típust hoz létre: debug (hibakereséssel, obfuszkáció nélkül) és release (ProGuard/R8-cal, publikálásra aláírva). A fejlesztő saját típusokat adhat hozzá: 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\"")
}
}
}
A Product Flavors lehetővé teszi egy alkalmazás különböző verzióinak létrehozását egyetlen kódbázisból. Például: ingyenes verzió reklámokkal, fizetős verzió reklámok nélkül és vállalati verzió további funkciókkal. Minden flavor rendelkezhet saját applicationId-val, erőforrásokkal és SDK-függőségekkel.
android {
productFlavors {
register("demo") {
applicationId = "com.example.app.demo"
versionNameSuffix = "-demo"
}
register("full") {
applicationId = "com.example.app"
versionNameSuffix = ""
}
}
}
Minden Build Variant-hoz a Gradle létrehozza a BuildConfig osztályt konfigurációs mezőkkel. A fejlesztő saját mezőit a buildConfigField segítségével adja hozzá, a standard mezők (DEBUG, APPLICATION_ID, BUILD_TYPE, VERSION_CODE, FLAVOR) pedig automatikusan jönnek létre.
// A BuildConfig használata a kódban
class NetworkModule {
fun createApiClient(): ApiClient {
return if (BuildConfig.DEBUG) {
ApiClient(
baseUrl = BuildConfig.API_URL,
interceptor = HttpLoggingInterceptor()
)
} else {
ApiClient(baseUrl = BuildConfig.API_URL)
}
}
}
A BuildConfig lehetővé teszi a funkciók be- vagy kikapcsolását is a build szakaszában. Például hozzáadható a FEATURE_CHAT_ENABLED mező, és a chat csak az alkalmazás teljes verziójában kapcsolható be, runtime ellenőrzések és feltételes operátorok nélkül.
A hálózati kérések hibakereséséhez a DEBUG mezővel rendelkező BuildConfig lehetővé teszi a HttpLoggingInterceptor automatikus csatlakoztatását az OkHttp-ban kizárólag a debug buildekhez. Ez garantálja, hogy éles környezetben egyetlen HTTP-kérést sem naplóznak, még akkor sem, ha a fejlesztő véletlenül elfelejti eltávolítani a naplózást a release build előtt.
Az iOS ökoszisztémában a Build Config a Xcode Build Settings segítségével kezelhető — ez egy paramétertáblázat, ahol minden paraméter eltérő értékekkel rendelkezhet a különböző konfigurációkban (Debug, Release, Staging).
Alapértelmezésben az Xcode két konfigurációt hoz létre: Debug (fejlesztéshez, optimalizálás nélkül) és Release (éles környezethez, -Os optimalizálással). A fejlesztő saját konfigurációkat adhat hozzá a Project > Info > Configurations menüben.
Minden konfigurációhoz Build Settings kerül beállításra: fordítói flagok (OTHER_SWIFT_FLAGS, GCC_PREPROCESSOR_DEFINITIONS), aláírási kód (CODE_SIGN_IDENTITY), provisioning profilok és entitlements. Az Xcode ezeket a beállításokat a project.pbxproj fájlban tárolja.
A Build Settings kényelmes kezeléséhez az iOS-fejlesztők .xcconfig fájlokat használnak — KEY = VALUE formátumú paramétereket tartalmazó szövegfájlokat. Ez a .env megfelelője az Xcode számára: az értékek a projekthez csatlakoznak, és felülírják a project.pbxproj beállításait.
// 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
A Build Config paramétereinek egy része az Info.plist fájlba kerül — ez az iOS-alkalmazás manifest fájlja. Az Info.plist segítségével URL-sémák, engedélyek (kamera, mikrofon), háttérmódok és a harmadik féltől származó szolgáltatásokon keresztüli bejelentkezés konfigurációja állítható be.
Az xcconfig értékei a $(VARIABLE_NAME) szintaxis segítségével illeszthetők be az Info.plist-be. Például a $(API_BASE_URL) az Info.plist-ben az aktív buildkonfigurációnak megfelelően bontakozik ki. Ez központosítja a környezeti paraméterek kezelését az összes Apple platformon.
A modern projektekben a Build Config integrálódik a folyamatos integrációs rendszerekkel: GitLab CI, GitHub Actions, Bitrise, CircleCI. Minden pipeline felülírhatja a Build Config paramétereit a CI/CD rendszer környezeti változóin keresztül.
Android esetén a CI pipeline a Gradle-t a Build Variant megadásával indítja: ./gradlew assembleFullRelease. Az aláírási paramétereket CI-változókon keresztül adják át: STORE_PASSWORD, KEY_ALIAS. A Gradle ezeket a futási környezetből olvassa be, és beilleszti a build.gradle.kts-be.
// build.gradle.kts — olvasás CI-változókból
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 esetén a CI a xcodebuild parancsot használja konfigurációs flagokkal: -configuration Release. Az aláírási tanúsítványokat CI-secrets-en keresztül, a profilokat pedig Apple Developer Portal API-n vagy Fastlane match-en keresztül szállítják.
A Fastlane eszköz automatizálja a Build Config kezelését: xcconfig-ot generál, frissíti a verziókat az Info.plist-ben, aláírja a lefordított IPA-fájlokat és feltölti őket az App Store Connect-be. A Fastlane gym (építés) és match (aláírás) — az iOS CI-pipeline-ok szabványa.
A Bitrise Build Report (2025) szerint a CI-ben beállított Build Config-gal rendelkező projektek 73%-kal csökkentik a build manuális beállításának idejét, és 89%-kal az aláírási hibák számát. Az automatizált Build Config — a production-ready pipeline kötelező eleme.
Egy másik fontos szempont — a verziókezelés paraméterezése a Build Config-on keresztül. A Gradle lehetővé teszi a versionCode és versionName értékek CI-változókból történő olvasását és dinamikus beillesztését a build.gradle.kts-be, ami kiküszöböli a fejlesztők közötti verzió-eltéréseket. Az iOS-ben hasonló feladatot az agvtool (Apple Generic Versioning Tool) old meg, amely git-tagek vagy a CI buildszáma alapján képes növelni a build számát.
Gyakran ismételt kérdések
A Build Type (debug, release) azt határozza meg, hogyan készül az alkalmazás: hibakereséssel vagy anélkül, optimalizálással vagy anélkül. A Product Flavor (demo, full) azt határozza meg, melyik verzió készül: eltérő applicationId, SDK, erőforrások. A kombinációjukat Build Variant-nak nevezzük.
A buildConfigField metódus segítségével a build.gradle.kts-ben. A mező hozzáadódik az automatikusan generált BuildConfig osztályhoz, és a kódban BuildConfig.FIELD_NAME formában érhető el. Karakterláncok esetén az értéket escape-elt idézőjelekbe kell tenni.
.xcconfig fájlokon keresztül — minden környezethez egy. A Project > Info > Configurations menüben Debug/Staging/Release konfigurációkat adnak hozzá, amelyek mindegyike a saját xcconfig-ára hivatkozik. Az értékek a $(VAR_NAME) szintaxissal kerülnek az Info.plist-be.
A BuildConfig elválasztja a buildkonfigurációt az alkalmazás logikájától. A kódban lévő flagek manuális módosítást és újrafordítást igényelnek a környezetek váltásakor. A BuildConfig automatikusan váltja az összes paramétert, amikor Build Variant-ot választanak az IDE-ben vagy a CI-ben.
Igen, a Gradle lehetővé teszi a függőségek megadását az egyes flavorokhoz: demoImplementation és fullImplementation. A demo verzió csatlakoztathat analitikai könyvtárat, a teljes verzió pedig — nem. Ez csökkenti az APK méretét a különböző flavoroknál.
Összegzés
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is