Mobil proqramlarda Build Config — bu nədir, qurulması və iş prinsipi

Müəllif: IT Sectr Dərc olunub: 2026-06-01 Oxuma vaxtı: 9 dəq

Build Config yığım parametrlərini əhatə edir: build növləri, kompilyasiya flaqları, imzalama açarları və SDK versiyaları, bunlar tətbiqin müxtəlif mühitlər üçün necə yığılacağını müəyyən edir. Android Developers Guide (2026)-a görə, Gradle yığım sistemi çevik konfiqurasiya üçün Product Flavors və Build Types dəstəkləyir. Build Config kodu əl ilə dəyişmədən debug və release arasında keçidi avtomatlaşdırır.

Əsas məqamlar

  • Build Config — tətbiqin necə, hansı flaqla və hansı platforma üçün yığıldığını müəyyən edən yığım parametrləri sistemidir.
  • Gradle Android-də müstəqil konfiqurasiyaları olan Build Types (debug, release) və Product Flavors (demo, tam versiya) dəstəkləyir.
  • Xcode kompilyasiya flaqlarını və imzalamanı qurmaq üçün Build Configurations (Debug, Release) və Build Settings istifadə edir.
  • BuildConfig.java — cari yığım konfiqurasiyasının dəyərləri olan sahələri saxlayan, Android-də yaradılan sinif.
  • Avtomatlaşdırma Build Config müxtəlif flavorları yığmaq üçün CI/CD paylayları (GitLab CI, GitHub Actions) ilə inteqrasiya olunur.

Mobil inkişafda Build Config nədir

Build Config — mobil tətbiqin kompilyasiya, yığım və paketləmə prosesini müəyyən edən parametrlər toplusudur. Yığım konfiqurasiyası hədəf platformanın seçimini, minimum SDK versiyasını, optimallaşdırma flaqlarını, imzalama açarlarını və mühit dəyişənlərini əhatə edir.

Müasir mobil layihələrdə nadir hallarda yalnız bir yığım konfiqurasiyası olur. Adətən onlar bir neçə olur: debug (debug ilə inkişaf üçün), release (optimallaşdırma ilə istehsal üçün), staging (real məlumatlarla test üçün) və müxtəlif flavorlar (demo, tam, korporativ versiyalar).

Gradle Build Tool Survey (2025) sorğusuna görə, orta hesabla Android layihəsi 3.2 müxtəlif yığım konfiqurasiyası istifadə edir, iOS layihəsi isə — 2.8. Hər konfiqurasiyanın öz kompilyasiya flaqları, imzalama sertifikatları və server URL-ləri ola bilər.

Build Config-in əsas vəzifəsi bu konfiqurasiyalar arasında keçidi avtomatlaşdırmaqdır. Server URL-ni və ya debug flaqını əl ilə dəyişmək əvəzinə, proqramçı IDE-də istədiyi Build Variant-ı seçir və yığım sistemi müvafiq parametrləri əvəz edir.

Build Config-in düzgün qurulması tətbiqin təhlükəsizliyinə kritik təsir göstərir: debug yığımında ətraflı loglar, verilənlər bazası inspektoru və debug endpointləri aktiv olur, onlar release faylından fiziki olaraq xaric edilməlidir. Gradle bunu Build Types vasitəsilə həll edir: debug-da debuggable true flaqı, release-da ProGuard ilə minifyEnabled true quraşdırıla bilər. iOS buna Swift Active Compilation Conditions vasitəsilə nail olur, burada #if DEBUG daxilindəki kod release konfiqurasiyasında kompilyasiya olunmur.

Android-də Build Config: Gradle və BuildConfig

Android iki əsas anlayışı olan Gradle yığım sistemindən istifadə edir: Build Types və Product Flavors. Onların kombinasiyası Build Variants yaradır — hər variant öz tam yığım konfiqurasiyasına uyğundur.

Build Types: debug və release

Build Type — tətbiqin necə yığıldığını müəyyən edən konfiqurasiyadır. Gradle standart olaraq iki tip yaradır: debug (debug ilə, obfuskasiyasız) və release (ProGuard/R8 ilə, dərc üçün imzalanmış). Proqramçı öz tiplərini əlavə edə bilər: 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: tətbiqin versiyaları

Product Flavors bir kod bazasından bir tətbiqin müxtəlif versiyalarını yaratmağa imkan verir. Məsələn: reklamlı pulsuz versiya, reklamsız ödənişli versiya və əlavə funksiyaları olan korporativ versiya. Hər flavorun öz applicationId-i, resursları və SDK asılılıqları ola bilər.

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

BuildConfig sinfi: koddan giriş

Gradle hər Build Variant üçün konfiqurasiya sahələri olan BuildConfig sinfi yaradır. Proqramçı öz sahələrini buildConfigField vasitəsilə əlavə edir, standart sahələr (DEBUG, APPLICATION_ID, BUILD_TYPE, VERSION_CODE, FLAVOR) isə avtomatik yaradılır.

kotlin
// Kodda BuildConfig istifadəsi
class NetworkModule {
    fun createApiClient(): ApiClient {
        return if (BuildConfig.DEBUG) {
            ApiClient(
                baseUrl = BuildConfig.API_URL,
                interceptor = HttpLoggingInterceptor()
            )
        } else {
            ApiClient(baseUrl = BuildConfig.API_URL)
        }
    }
}

BuildConfig həmçinin yığım mərhələsində funksionallığı aktivləşdirməyə və ya söndürməyə imkan verir. Məsələn, FEATURE_CHAT_ENABLED sahəsi əlavə edib çatı yalnız tətbiqin tam versiyasında aktivləşdirmək olar, runtime yoxlamaları və kodda şərti operatorlar olmadan.

Şəbəkə sorğularını debug etmək üçün DEBUG sahəli BuildConfig, OkHttp-da HttpLoggingInterceptor-u yalnız debug yığımları üçün avtomatik qoşmağa imkan verir. Bu, istehsalda heç bir HTTP sorğusunun qeydə alınmayacağını təmin edir, hətta proqramçı release yığımından əvvəl logları silməyi təsadüfən unutsa belə.

iOS-da Build Config: Xcode və Build Settings

iOS ekosistemində Build Config Xcode Build Settings vasitəsilə idarə olunur — hər parametrin müxtəlif konfiqurasiyalar (Debug, Release, Staging) üçün fərqli dəyərləri ola bilən parametrlər cədvəlidir.

Xcode Build Configurations

Xcode standart olaraq iki konfiqurasiya yaradır: Debug (inkişaf üçün, optimallaşdırmasız) və Release (istehsal üçün, -Os optimallaşdırması ilə). Proqramçı Project > Info > Configurations menyusu vasitəsilə öz konfiqurasiyalarını əlavə edə bilər.

Hər konfiqurasiya üçün Build Settings qurulur: kompilyator flaqları (OTHER_SWIFT_FLAGS, GCC_PREPROCESSOR_DEFINITIONS), imzalama kodu (CODE_SIGN_IDENTITY), provisioning profilləri və entitlements. Xcode bu parametrləri project.pbxproj faylında saxlayır.

xcconfig: xarici konfiqurasiya faylları

Build Settings-i rahat idarə etmək üçün iOS proqramçıları .xcconfig fayllarından istifadə edirlər — KEY = VALUE formatında parametrləri olan mətn faylları. Bu, Xcode üçün .env-in analoqudur: dəyərlər layihəyə qoşulur və project.pbxproj-dakı parametrləri əvəz edir.

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: icra zamanı konfiqurasiya

Build Config parametrlərinin bir hissəsi Info.plist-ə daxil olur — iOS tətbiqinin manifest faylı. Info.plist vasitəsilə URL sxemləri, icazələr (kamera, mikrofon), arxa plan rejimləri və üçüncü tərəf xidmətləri vasitəsilə giriş konfiqurasiyası qurulur.

xcconfig-dən alınan dəyərləri $(VARIABLE_NAME) sintaksisi vasitəsilə Info.plist-ə əvəz etmək olar. Məsələn, Info.plist-dəki $(API_BASE_URL) aktiv yığım konfiqurasiyasına uyğun açılır. Bu, bütün Apple platformaları üçün mühit parametrlərinin idarə olunmasını mərkəzləşdirir.

CI/CD paylaylarında Build Config

Müasir layihələrdə Build Config fasiləsiz inteqrasiya sistemləri ilə inteqrasiya olunur: GitLab CI, GitHub Actions, Bitrise, CircleCI. Hər paylay CI/CD sisteminin mühit dəyişənləri vasitəsilə Build Config parametrlərini əvəz edə bilər.

CI-da Gradle Build Config

Android üçün CI paylayı Build Variant göstərilməklə Gradle-i işə salır: ./gradlew assembleFullRelease. İmzalama parametrləri CI dəyişənləri vasitəsilə ötürülür: STORE_PASSWORD, KEY_ALIAS. Gradle onları icra mühitindən oxuyur və build.gradle.kts-ə əvəz edir.

kotlin
// build.gradle.kts — CI dəyişənlərindən oxunma
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") ?: ""
        }
    }
}

CI-da Xcode Build Config

iOS üçün CI konfiqurasiya flaqları ilə xcodebuild istifadə edir: -configuration Release. İmzalama sertifikatları CI secrets vasitəsilə, profillər isə Apple Developer Portal API və ya Fastlane match vasitəsilə çatdırılır.

Fastlane aləti Build Config idarəetməsini avtomatlaşdırır: xcconfig yaradır, Info.plist-də versiyaları yeniləyir, yığılmış IPA-ları imzalayır və App Store Connect-ə yükləyir. Fastlane gym (yığım) və match (imzalama) — iOS CI paylaylarının standartıdır.

Bitrise Build Report (2025) məlumatına görə, CI-da Build Config qurulmuş layihələr əl ilə yığım qurulması vaxtını 73% azaldır və imzalama xətalarının sayını 89% aşağı salır. Avtomatlaşdırılmış Build Config production-ready paylayının məcburi elementidir.

Digər vacib aspekt — Build Config vasitəsilə versiyalama parametrləşdirilməsidir. Gradle versionCode və versionName-i CI dəyişənlərindən oxuyub onları build.gradle.kts-ə dinamik əvəz etməyə imkan verir, bu da proqramçılar arasında versiya uyğunsuzluğunu aradan qaldırır. iOS-da oxşar vəzifə agvtool (Apple Generic Versioning Tool) vasitəsilə həll olunur, o, git teqləri və ya CI-də build nömrəsi əsasında yığım nömrəsini artıra bilir.

Tez-tez verilən suallar

Android-də Build Type və Product Flavor arasında nə fərq var?

Build Type (debug, release) tətbiqin necə yığıldığını müəyyən edir: debug ilə və ya onsuz, optimallaşdırma ilə və ya onsuz. Product Flavor (demo, full) hansı versiyanın yığıldığını müəyyən edir: müxtəlif applicationId, SDK, resurslar. Onların kombinasiyası Build Variant adlanır.

Build Config-dən Android koduna dəyəri necə ötürmək olar?

build.gradle.kts-də buildConfigField metodu vasitəsilə. Sahə avtomatik yaradılan BuildConfig sinfinə əlavə olunur və kodda BuildConfig.FIELD_NAME kimi əlçatan olur. Sətirlər üçün dəyəri ekranlaşdırılmış dırnaqlara bükmək lazımdır.

iOS-da bir neçə mühiti (development, staging, production) necə qurmaq olar?

.xcconfig faylları vasitəsilə — hər mühit üçün biri. Project > Info > Configurations-da Debug/Staging/Release konfiqurasiyaları əlavə olunur, hər biri öz xcconfig-inə istinad edir. Dəyərlər $(VAR_NAME) sintaksisi ilə Info.plist-ə əvəz olunur.

Kodda flaqlar əvəzinə niyə BuildConfig istifadə edilməlidir?

BuildConfig yığım konfiqurasiyasını tətbiqin məntiqindən ayırır. Kodda flaqlar mühitləri dəyişdirərkən əl ilə dəyişdirmə və yenidən kompilyasiya tələb edir. BuildConfig IDE-də və ya CI-da Build Variant seçərkən bütün parametrləri avtomatik dəyişir.

Müxtəlif flavorlar üçün fərqli asılılıqlar ola bilərmi?

Bəli, Gradle konkret flavorlar üçün asılılıqları göstərməyə imkan verir: demoImplementationfullImplementation. Demo versiya analitika kitabxanasını qoşa bilər, tam versiya isə — yox. Bu, müxtəlif flavorlar üçün APK ölçüsünü azaldır.

Nəticələr

  • Build Config — tətbiqin necə kompilyasiya olunduğunu və hansı mühit üçün yığıldığını idarə edən yığım parametrləri sistemi.
  • Android parametrlərə koddan giriş üçün Build Types, Product Flavors və yaradılan BuildConfig sinfi ilə Gradle istifadə edir.
  • iOS kompilyasiya flaqlarını, imzalamanı və server URL-lərini qurmaq üçün Xcode Build Settings və .xcconfig fayllarından istifadə edir.
  • Build Variant — öz resursları olan unikal yığım konfiqurasiyası yaradan Build Type və Product Flavor kombinasiyası.
  • CI/CD inteqrasiyası əl ilə qurulmanı istisna edərək, Build Config parametrlərini mühit dəyişənləri vasitəsilə ötürməyə imkan verir.
  • FastlaneGradle hər iki platforma üçün imzalamanı, versiyalamanı və dərci avtomatlaşdırır.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun