Mobil ilovalarda Build Config — bu nima, sozlash va ishlash printsipi

Muallif: IT Sectr Nashr etilgan: 2026-06-01 O'qish vaqti: 9 daq

Build Config build parametrlarini o'z ichiga oladi: build turlari, kompilyatsiya flaglari, imzolash kalitlari va SDK versiyalari, ular ilovaning turli muhitlar uchun qanday yig'ilishini belgilaydi. Android Developers Guide (2026) ma'lumotlariga ko'ra, Gradle build tizimi moslashuvchan konfiguratsiya uchun Product Flavors va Build Types-ni qo'llab-quvvatlaydi. Build Config kodni qo'lda o'zgartirmasdan debug va release o'rtasida almashishni avtomatlashtiradi.

Asosiy narsalar

  • Build Config — ilovaning qanday, qaysi flaglar bilan va qaysi platforma uchun yig'ilishini belgilaydigan build parametrlari tizimi.
  • Gradle Android-da mustaqil konfiguratsiyalarga ega Build Types (debug, release) va Product Flavors (demo, to'liq versiya) qo'llab-quvvatlaydi.
  • Xcode kompilyatsiya flaglari va imzolashni sozlash uchun Build Configurations (Debug, Release) va Build Settings-dan foydalanadi.
  • BuildConfig.java — joriy build konfiguratsiyasi qiymatlariga ega maydonlarni o'z ichiga olgan, Android-da yaratiladigan klass.
  • Avtomatlashtirish Build Config turli flavorlarni yig'ish uchun CI/CD pipeline'lar (GitLab CI, GitHub Actions) bilan integratsiyalashadi.

Mobil ishlanmada Build Config nima

Build Config — mobil ilovaning kompilyatsiya, yig'ish va paketlash jarayonini belgilaydigan sozlamalar to'plami. Build konfiguratsiyasi maqsadli platformani, minimal SDK versiyasini, optimallashtirish flaglarini, imzolash kalitlarini va muhit o'zgaruvchilarini tanlashni o'z ichiga oladi.

Zamonaviy mobil loyihalarda kamdan-kam hollarda bitta build konfiguratsiyasi bo'ladi. Odatda ular bir nechta bo'ladi: debug (nosozliklarni tuzatish bilan ishlab chiqish uchun), release (optimallashtirish bilan ishlab chiqarish uchun), staging (haqiqiy ma'lumotlar bilan test qilish uchun) va turli flavorlar (demo, to'liq, korporativ versiyalar).

Gradle Build Tool Survey (2025) so'roviga ko'ra, o'rtacha Android loyihasi 3.2 xil build konfiguratsiyasidan foydalanadi, iOS loyihasi esa — 2.8. Har bir konfiguratsiya o'z kompilyatsiya flaglari, imzolash sertifikatlari va server URL'lariga ega bo'lishi mumkin.

Build Config-ning asosiy vazifasi bu konfiguratsiyalar o'rtasida almashishni avtomatlashtirishdir. Server URL yoki debug flagini qo'lda o'zgartirish o'rniga, dasturchi IDE-da kerakli Build Variant-ni tanlaydi va build tizimi tegishli parametrlarni o'rnini bosadi.

Build Config-ni to'g'ri sozlash ilova xavfsizligiga jiddiy ta'sir qiladi: debug buildda batafsil loglar, ma'lumotlar bazasi inspektori va debug endpointlar yoqilgan bo'ladi, ular release faylidan jismonan chiqarib tashlanishi kerak. Gradle buni Build Types orqali hal qiladi: debug-da debuggable true flagi, release-da ProGuard bilan minifyEnabled true o'rnatilishi mumkin. iOS xuddi shunday natijaga Swift Active Compilation Conditions orqali erishadi, bunda #if DEBUG ichidagi kod release konfiguratsiyasida kompilyatsiya qilinmaydi.

Android-da Build Config: Gradle va BuildConfig

Android ikkita asosiy tushunchaga ega Gradle build tizimidan foydalanadi: Build Types va Product Flavors. Ularning kombinatsiyasi Build Variants-ni hosil qiladi — har bir variantga o'zining to'liq build konfiguratsiyasi mos keladi.

Build Types: debug va release

Build Type — ilovaning qanday yig'ilishini belgilaydigan konfiguratsiya. Gradle standart ravishda ikkita turni yaratadi: debug (nosozliklarni tuzatish bilan, obfuskatsiyasiz) va release (ProGuard/R8 bilan, nashr uchun imzolangan). Dasturchi o'z turlarini qo'shishi mumkin: 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: ilovaning versiyalari

Product Flavors bitta kod bazasidan bitta ilovaning turli versiyalarini yaratish imkonini beradi. Masalan: reklamali bepul versiya, reklamasiz pullik versiya va qo'shimcha funksiyalarga ega korporativ versiya. Har bir flavor o'z applicationId, resurslari va SDK bog'liqliklariga ega bo'lishi mumkin.

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

BuildConfig klassi: koddan kirish

Gradle har bir Build Variant uchun konfiguratsiya maydonlariga ega BuildConfig klassini yaratadi. Dasturchi o'z maydonlarini buildConfigField orqali qo'shadi, standart maydonlar (DEBUG, APPLICATION_ID, BUILD_TYPE, VERSION_CODE, FLAVOR) esa avtomatik yaratiladi.

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

BuildConfig shuningdek build bosqichida funksionallikni yoqish yoki o'chirish imkonini beradi. Masalan, FEATURE_CHAT_ENABLED maydonini qo'shib, chatni faqat ilovaning to'liq versiyasida yoqish mumkin, runtime tekshiruvlari va koddagi shartli operatorlarsiz.

Tarmoq so'rovlarini nosozliklarni tuzatish uchun DEBUG maydoniga ega BuildConfig OkHttp-da HttpLoggingInterceptor-ni faqat debug buildlar uchun avtomatik ulash imkonini beradi. Bu ishlab chiqarishda hech qanday HTTP so'rovi qayd etilmasligini kafolatlaydi, hatto dasturchi release builddan oldin loglarni olib tashlashni tasodifan unutib qo'ysa ham.

iOS-da Build Config: Xcode va Build Settings

iOS ekotizimida Build Config Xcode Build Settings orqali boshqariladi — har bir parametr turli konfiguratsiyalar (Debug, Release, Staging) uchun turli qiymatlarga ega bo'lishi mumkin bo'lgan parametrlar jadvali.

Xcode Build Configurations

Xcode standart ravishda ikkita konfiguratsiya yaratadi: Debug (ishlab chiqish uchun, optimallashtirishsiz) va Release (ishlab chiqarish uchun, -Os optimallashtirishi bilan). Dasturchi Project > Info > Configurations menyusi orqali o'z konfiguratsiyalarini qo'shishi mumkin.

Har bir konfiguratsiya uchun Build Settings sozlanadi: kompilyator flaglari (OTHER_SWIFT_FLAGS, GCC_PREPROCESSOR_DEFINITIONS), imzolash kodi (CODE_SIGN_IDENTITY), provisioning profillari va entitlements. Xcode bu sozlamalarni project.pbxproj faylida saqlaydi.

xcconfig: tashqi konfiguratsiya fayllari

Build Settings-ni qulay boshqarish uchun iOS dasturchilari .xcconfig fayllaridan foydalanadilar — KEY = VALUE formatida parametrlarga ega matnli fayllar. Bu Xcode uchun .env ning analogidir: qiymatlar loyihaga ulanadi va project.pbxproj'dagi sozlamalarni qayta yozadi.

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: bajarilish vaqtidagi konfiguratsiya

Build Config parametrlarining bir qismi Info.plist ga tushadi — iOS ilovasining manifest fayli. Info.plist orqali URL sxemalari, ruxsatlar (kamera, mikrofon), fon rejimlari va uchinchi tomon xizmatlari orqali kirish konfiguratsiyasi sozlanadi.

xcconfig'dan olingan qiymatlarni Info.plist ga $(VARIABLE_NAME) sintaksisi orqali kiritish mumkin. Masalan, Info.plist'dagi $(API_BASE_URL) aktiv build konfiguratsiyasiga muvofiq ochiladi. Bu barcha Apple platformalari uchun muhit parametrlarini boshqarishni markazlashtiradi.

CI/CD pipeline'larida Build Config

Zamonaviy loyihalarda Build Config uzluksiz integratsiya tizimlari bilan integratsiyalashadi: GitLab CI, GitHub Actions, Bitrise, CircleCI. Har bir pipeline CI/CD tizimining muhit o'zgaruvchilari orqali Build Config parametrlarini qayta yozishi mumkin.

CI-da Gradle Build Config

Android uchun CI pipeline Build Variant ko'rsatilgan holda Gradle-ni ishga tushiradi: ./gradlew assembleFullRelease. Imzolash parametrlari CI o'zgaruvchilari orqali uzatiladi: STORE_PASSWORD, KEY_ALIAS. Gradle ularni bajarish muhitidan o'qiydi va build.gradle.kts ga kiritadi.

kotlin
// build.gradle.kts — CI o'zgaruvchilaridan o'qish
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 uchun CI konfiguratsiya flaglari bilan xcodebuild dan foydalanadi: -configuration Release. Imzolash sertifikatlari CI secrets orqali, profillar esa Apple Developer Portal API yoki Fastlane match orqali yetkaziladi.

Fastlane vositasi Build Config boshqaruvini avtomatlashtiradi: xcconfig yaratadi, Info.plist dagi versiyalarni yangilaydi, yig'ilgan IPA fayllarini imzolaydi va ularni App Store Connect ga yuklaydi. Fastlane gym (yig'ish) va match (imzolash) — iOS CI pipeline'larining standartidir.

Bitrise Build Report (2025) ma'lumotlariga ko'ra, CI da Build Config sozlangan loyihalar buildni qo'lda sozlash vaqtini 73% ga qisqartiradi va imzolash xatolari sonini 89% ga kamaytiradi. Avtomatlashtirilgan Build Config — production-ready pipeline'ning majburiy elementidir.

Yana bir muhim jihat — Build Config orqali versiyalashni parametrlash. Gradle versionCode va versionName ni CI o'zgaruvchilaridan o'qib, ularni build.gradle.kts ga dinamik kiritish imkonini beradi, bu dasturchilar o'rtasida versiyalar nomutanosibligini bartaraf etadi. iOS da shunga o'xshash vazifani agvtool (Apple Generic Versioning Tool) hal qiladi, u git teglari yoki CI dagi build raqami asosida build raqamini oshira oladi.

Ko'p so'raladigan savollar

Android-da Build Type va Product Flavor o'rtasidagi farq nima?

Build Type (debug, release) ilovaning qanday yig'ilishini belgilaydi: nosozliklarni tuzatish bilan yoki holda, optimallashtirish bilan yoki holda. Product Flavor (demo, full) qaysi versiya yig'ilishini belgilaydi: turli applicationId, SDK, resurslar. Ularning kombinatsiyasi Build Variant deb ataladi.

Build Config dan Android kodiga qiymatni qanday uzatish mumkin?

build.gradle.kts da buildConfigField metodi orqali. Maydon avtomatik yaratilgan BuildConfig klassiga qo'shiladi va kodda BuildConfig.FIELD_NAME sifatida mavjud bo'ladi. Qatorlar uchun qiymatni escape qilingan qo'shtirnoqlarga o'rash kerak.

iOS da bir nechta muhitni (development, staging, production) qanday sozlash mumkin?

.xcconfig fayllari orqali — har bir muhit uchun bittadan. Project > Info > Configurations da Debug/Staging/Release konfiguratsiyalari qo'shiladi, har biri o'z xcconfig ga ishora qiladi. Qiymatlar $(VAR_NAME) sintaksisi orqali Info.plist ga kiritiladi.

Nega kod ichidagi flaglar o'rniga BuildConfig dan foydalanish kerak?

BuildConfig build konfiguratsiyasini ilova mantig'idan ajratadi. Koddagi flaglar muhitlarni almashtirishda qo'lda o'zgartirish va qayta kompilyatsiya qilishni talab qiladi. BuildConfig IDE yoki CI da Build Variant tanlanganda barcha parametrlarni avtomatik almashtiradi.

Turli flavorlar uchun turli bog'liqliklarga ega bo'lish mumkinmi?

Ha, Gradle aniq flavorlar uchun bog'liqliklarni ko'rsatishga imkon beradi: demoImplementation va fullImplementation. Demo versiya analitika kutubxonasini ulashi mumkin, to'liq versiya esa — yo'q. Bu turli flavorlar uchun APK hajmini kamaytiradi.

Xulosalar

  • Build Config — ilovaning qanday kompilyatsiya qilinishini va qaysi muhit uchun yig'ilishini boshqaradigan build parametrlari tizimi.
  • Android parametrlarga koddan kirish uchun Build Types, Product Flavors va yaratilgan BuildConfig klassi bilan Gradle dan foydalanadi.
  • iOS kompilyatsiya flaglari, imzolash va server URL'larini sozlash uchun Xcode Build Settings va .xcconfig fayllaridan foydalanadi.
  • Build Variant — o'z resurslariga ega noyob build konfiguratsiyasini yaratadigan Build Type va Product Flavor kombinatsiyasi.
  • CI/CD integratsiyasi qo'lda sozlashni istisno qilib, Build Config parametrlarini muhit o'zgaruvchilari orqali uzatish imkonini beradi.
  • Fastlane va Gradle ikkala platforma uchun imzolash, versiyalash va nashrni avtomatlashtiradi.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing