Mobil inkişafda konfiqurasiya idarəetməsi: bu nədir, hansı variantlar var və necə qurulur

Müəllif: IT Sectr Dərc olunub: 2026-05-30 Oxuma vaxtı: 8 dəq

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

  • Mobil tətbiqlərdə konfiqurasiya idarəetməsi Build Variant (Android), Scheme (iOS) və .env (platformalararası) üzərində qurulur — production hadisələrinin 47%-i səhv ayarlarla əlaqəlidir.
  • iOS Scheme + .xcconfig istifadə edir. Scheme yığma, sınama və arxivləşdirməni idarə edir. .xcconfig build ayarlarını fayllara köçürür.
  • Platformalararası alətlər — pubspec.yaml (Flutter), Podfile (CocoaPods), .env (mühit dəyişənləri) — konfiqurasiyanı mərkəzləşdirir.
  • Şərti kompilyasiya — kompilyasiya zamanı kodun daxil edilməsi/xaric edilməsi. #if DEBUG, BuildConfig.DEBUG — buraxılış davranışını dəyişmədən sazlama üçün.
  • API açarları və sirlər kodda saxlanıla bilməz. .env, Build Config və ya proksi server istifadə edin. .apk/.ipa-nın dekompilyasiyası trivialdır.

Android-də konfiqurasiya idarəetməsi: Build Variant və build.gradle

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 Variant vs Product Flavor

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.

groovy
// 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 və Gradle KTS

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 və .xcconfig

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 faylları

.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 vs Build Configuration

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.

Flutter və React Native-də konfiqurasiya idarəetməsi: pubspec.yaml, Podfile, .env

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 və Mühit Dəyişənləri

.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 və pubspec.yaml

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 vahidiBuild VariantSchemeFlavor (--flavor)
Build faylıbuild.gradle.xcconfigpubspec.yaml
Şərti kodBuildConfigActive Compilation Conditionsdart-define
SirlərBuildConfig/NDK.xcconfig.env/dart-define
Asılılıq meneceriGradle (Maven)SPM/CocoaPodspub (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.

Konfiqurasiya idarəetməsində şərti kompilyasiya

Şə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.

Swift-də şərti kompilyasiya

#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.

Kotlin-də şərti kompilyasiya

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) { ... }.

Flutter-də şərti kompilyasiya

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

Android-də Build Variant Product Flavor-dan nə ilə fərqlənir?

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 nədir və niyə iOS-də lazımdır?

.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.

Mobil tətbiqdə API açarlarını təhlükəsiz necə saxlamaq olar?

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 nədir və nə vaxt istifadə olunur?

Şə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.

CocoaPods olmadan layihədə Podfile lazımdırmı?

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ə

  • Mobil tətbiqlərdə konfiqurasiya idarəetməsi sabit CI/CD-nin əsasıdır. Android Build Variant istifadə edir, iOS Scheme istifadə edir, Flutter dart-define istifadə edir.
  • Android: Build Variant = Build Type × Product Flavor. BuildConfig hər variant üçün yaradılır.
  • iOS: Scheme + .xcconfig konfiqurasiyanı idarə edir. Info.plist — tətbiq metadata.
  • Flutter: build dəyişənləri üçün dart-define. Asılılıqlar üçün pubspec.yaml.
  • Şərti kompilyasiya (#if DEBUG, BuildConfig.DEBUG) — konfiqurasiya idarəetməsinin hissəsi, release-də debug kodunu silməyin standart yolu.
  • .env — depodan kənarda sirlərin təhlükəsiz saxlanması. .env-ni Git-ə commit etməyin.
  • Mobil layihələrdə konfiqurasiya idarəetməsi ilk commit-dən diqqət tələb edir — düzgün build qurulumu hər buraxılışda saatlarla sazlama vaxtına qənaət edir.

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