Konfiqurasiya idarəetməsi mobil inkişafın ən az qiymətləndirilən aspektlərindən biridir. CloudBees (2025) məlumatına görə, production hadisələrinin 47%-i səhv build konfiqurasiyaları ilə əlaqəlidir. Build Variant, Scheme və .env fayllarının düzgün qurulması sabit CI/CD və proqnozlaşdırıla bilən buraxılışların açarıdır.
Əsas məqamlar
Build Variant — Build Type (debug/release/staging) və Product Flavor-un (free/paid, demo/full) kombinasiyası. Gradle hər kombinasiya üçün avtomatik variant yaradır: freeDebug, freeRelease, paidDebug, paidRelease. Hər variantın öz kodu, resursları və asılılıqları ola bilər — bu, Android-də mobil tətbiqlərdə konfiqurasiya idarəetməsinin əsasıdır.
Build Type — build ayarları: sazlama aktivdirsə, imzalama, ProGuard optimizasiyası. debug standart olaraq debuggable=true ehtiva edir, release — minifyEnabled=true.
Product Flavor — tətbiq variantı: pulsuz (free), pullu (paid), demo. Flavorlar müxtəlif applicationId, resurslar, SDK asılılıqlarına malik ola bilər.
// build.gradle — Android məhsul flavor konfiqurasiyası
android {
productFlavors {
free {
applicationId "com.example.app.free"
versionName "1.0-free"
}
paid {
applicationId "com.example.app.paid"
versionName "1.0-paid"
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt')
}
}
}
Nümunə iki flavor yaradır: free və paid. Free üçün ayrıca applicationId təyin edilib — bu, hər iki tətbiqin bir cihazda quraşdırılmasına imkan verir. BuildConfig hər variant üçün yaradılır: BuildConfig.FLAVOR = "free", BuildConfig.BUILD_TYPE = "debug". Şərti məntiq üçün kodda BuildConfig istifadə edin.
settings.gradle — layihə modullarını təsvir edən kök Gradle faylı.
Gradle KTS — Kotlin DSL istifadə edən Groovy alternativi. KTS Android Studio-da avtomatik tamamlama və tip yoxlaması təmin edir. Yeni layihələr üçün tövsiyə olunur.
iOS-də konfiqurasiya idarəetməsi Scheme üzərində qurulur — nəyi və necə yığmağı müəyyən edən Xcode konfiqurasiyası: Build Configuration (Debug/Release), testlər, analiz, arxivləşdirmə. Schemelər müxtəlif mühitlər (Development, Staging, Production) üçün təkrarlana bilər. Schemelər xcshareddata qovluğunda .xcscheme fayllarında saxlanılır.
.xcconfig — build ayarlarını mətn şəklində saxlayan Xcode konfiqurasiya faylı. Mobil tətbiq konfiqurasiya idarəetməsi üçün iOS .xcconfig istifadə edir: Git-də versiyalama, layihələr arasında təkrar istifadə, daha az əl ayarları. .xcconfig-də SWIFT_ACTIVE_COMPILATION_CONDITIONS, PRODUCT_BUNDLE_IDENTIFIER, CODE_SIGN_IDENTITY təyin edilir.
Info.plist — tətbiq metadata faylı. Versiya, identifikator, icazələri saxlayır. Info.plist Build Settings-də Info.plist File vasitəsilə hər Scheme üçün fərqli ola bilər.
AndroidManifest.xml — Android analoqu: icazələri, komponentləri, meta-məlumatları saxlayır.
Scheme — build ssenarisi (nə etmək). Build Configuration — ayarlar dəsti (necə etmək). Bir Scheme bir Build Configuration (Debug və ya Release) istifadə edir. CI/CD üçün: eyni Scheme-də Archive hərəkətini Release-ə, Test hərəkətini Debug-a konfiqurasiya edin.
pubspec.yaml — Flutter layihə konfiqurasiya faylı. Asılılıqları, versiyaları, resursları ehtiva edir. --dart-define vasitəsilə mühit dəyişənlərini dəstəkləyir.
Podfile — iOS üçün CocoaPods asılılıq meneceri. Kitabxana versiyalarını və platformanı müəyyən edir.
.env — bütün platformalar üçün mühit dəyişənləri olan fayl. Flutter və React Native konfiqurasiya idarəetməsi üçün fərqli yanaşmalar istifadə edir: Flutter-də dart-define, React Native-də react-native-config. Platformalararası layihələrdə konfiqurasiya idarəetməsi stack-dən asılı olaraq müxtəlif alətləri əhatə edir.
.env — açar=dəyər cütlərindən ibarət mətn faylı. Git-ə commit edilmir (.gitignore-a əlavə edin). Flutter üçün — flutter_dotenv, iOS üçün — #include ilə Config.xcconfig, Android üçün — BuildConfig. env dəyişənləri: API_URL, SENTRY_DSN, APP_SECRET. Mobil inkişaf konfiqurasiya idarəetməsində .env deposundan kənarda sirləri saxlamaq üçün de-fakto standartdır.
Podfile CocoaPods asılılıqlarını və platformanı təsvir edir (platform :ios, '15.0'). Flutter üçün pubspec.yaml — dependencies və dev_dependencies. Hər ikisi şərti asılılıqları dəstəkləyir: pod 'Analytics', :configs => ['Release'] və ya flutter pub add --flavor free. IT Sectr-də mobil layihələrdə sirlər üçün .env + BuildConfig, yerli asılılıqlar üçün Podfile istifadə edirik.
| Parametr | Android | iOS | Flutter |
|---|---|---|---|
| Konfiqurasiya vahidi | Build Variant | Scheme | Flavor (--flavor) |
| Build faylı | build.gradle | .xcconfig | pubspec.yaml |
| Şərti kod | BuildConfig | Active Compilation Conditions | dart-define |
| Sirlər | BuildConfig/NDK | .xcconfig | .env/dart-define |
| Asılılıq meneceri | Gradle (Maven) | SPM/CocoaPods | pub (dart) |
Cədvəl mobil platformalar arasında konfiqurasiya idarəetməsində əsas fərqləri göstərir. Android Build Variant vasitəsilə daha çox elastiklik təklif edir. iOS daha sadədir, lakin daha az elastikdir. Flutter konfiqurasiyanı dart-define-də mərkəzləşdirir, lakin yerli asılılıqlar hələ də Podfile/build.gradle konfiqurasiyasını tələb edir.
Şərti kompilyasiya — bayraqlardan asılı olaraq kompilyasiya zamanı kodun daxil edilməsi və ya xaric edilməsi. Bu, konfiqurasiya idarəetməsinin bir hissəsidir: sazlama alətlərini (loglama, inspektor) debug build-lərində yerləşdirməyə və release-dən çıxarmağa imkan verir. Tətbiq platformalar arasında fərqlənir.
#if DEBUG — Swift preprosesor direktivi. Blok daxilindəki kod yalnız Debug konfiqurasiyasında kompilyasiya olunur. Digər bayraqlar: #if !RELEASE, #if targetEnvironment(simulator). Build Settings-də Active Compilation Conditions — -D FLAG_NAME vasitəsilə xüsusi bayraqlar əlavə edin. Kompilyasiya şərtləri vasitəsilə build konfiqurasiya idarəetməsi iOS-də standart təcrübədir.
BuildConfig.DEBUG — boolean sahə, debug build-də true. BuildConfig Gradle tərəfindən avtomatik yaradılır. Xüsusi bayraqlar üçün build.gradle-da buildConfigField istifadə edin: buildConfigField "boolean", "REPORT_CRASHES", "true". Kodda: if (BuildConfig.REPORT_CRASHES) { ... }.
dart-define — Flutter kompilyasiya bayraqları: flutter run --dart-define=ENV=staging. Kodda: const env = String.fromEnvironment('ENV', defaultValue: 'production'). Şərti mobil tətbiq build-ləri üçün kod generasiyası ilə build_runner plagindən istifadə edin.
Tez-tez verilən suallar
Build Variant = Build Type (debug/release) + Product Flavor. Flavor tətbiq variantıdır (pullu/pulsuz, klient/server), Build Type build ayarlarıdır (sazlama/optimizasiya). flavour + type kombinasiyası variant əmələ gətirir: məsələn, paidDebug.
.xcconfig build ayarlarını mətn şəklində saxlayan Xcode konfiqurasiya faylıdır. Xcode layihəsindən ayarları Git dostu fayllara köçürməyə imkan verir, mobil layihələrdə CI/CD və komanda işini sadələşdirir.
API açarları kodda saxlanıla bilməz — istənilən .apk və ya .ipa dekompilyasiya oluna bilər. .env faylları, backend proksi və ya Build Config vasitəsilə obfuskasiya istifadə edin. IT Sectr sirləri serverdə saxlamağı və autentifikasiyadan sonra müştəriyə verməyi tövsiyə edir.
Şərti kompilyasiya bayraqlardan asılı olaraq kompilyasiya zamanı kodun daxil edilməsi/xaric edilməsidir. Swift-də — #if DEBUG, Kotlin-də — BuildConfig.DEBUG. Debug-da loglamanı aktiv etmək və release-də söndürmək üçün istifadə olunur. Bu, mobil inkişafda konfiqurasiya idarəetməsinin əsas elementidir.
Podfile yalnız CocoaPods ilə işləyərkən istifadə olunur. SPM və ya Carthage üçün lazım deyil. CocoaPods-dan imtina etmisinizsə, layihədə Podfile qoymayın — bu, komandanı və CI/CD sistemini çaşdırır.
Xülasə
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.