Mobil uygulamalarda Build Config — nedir, kurulumu ve çalışma prensibi

Yazar: IT Sectr Yayınlanma: 2026-06-01 Okuma süresi: 9 dk

Build Config, derleme parametrelerini içerir: derleme türleri, derleme bayrakları, imzalama anahtarları ve SDK sürümleri; bunlar, bir uygulamanın farklı ortamlar için nasıl oluşturulacağını belirler. Android Developers Guide (2026)'ya göre, Gradle derleme sistemi esnek yapılandırma için Product Flavors ve Build Types'ı destekler. Build Config, manuel kod değişikliği olmadan debug ve release arasında geçişi otomatikleştirir.

Önemli Noktalar

  • Build Config, uygulamanın nasıl, hangi bayraklarla ve hangi platform için oluşturulacağını tanımlayan bir derleme parametreleri sistemidir.
  • Android'de Gradle, bağımsız yapılandırmalarla Build Types (debug, release) ve Product Flavors'ı (demo, tam sürüm) destekler.
  • Xcode, derleme bayraklarını ve imzalamayı yapılandırmak için Build Configurations (Debug, Release) ve Build Settings kullanır.
  • BuildConfig.java, Android'de oluşturulan ve mevcut derleme yapılandırmasının değerlerini içeren alanlara sahip bir sınıftır.
  • Otomasyon, Build Config'in farklı flavor'ları derlemek için CI/CD boru hatlarıyla (GitLab CI, GitHub Actions) entegre olmasını sağlar.

Mobil geliştirmede Build Config nedir

Build Config, bir mobil uygulamanın derleme, oluşturma ve paketleme sürecini tanımlayan ayarlar bütünüdür. Derleme yapılandırması, hedef platform seçimini, minimum SDK sürümünü, optimizasyon bayraklarını, imzalama anahtarlarını ve ortam değişkenlerini içerir.

Modern mobil projelerde nadiren tek bir derleme yapılandırması bulunur. Genellikle birden fazla yapılandırma vardır: debug (hata ayıklamalı geliştirme için), release (optimizasyonlu üretim için), staging (gerçek verilerle test için) ve çeşitli flavor'lar (demo, tam, kurumsal sürüm).

Gradle Build Tool Survey (2025)'e göre, ortalama bir Android projesi 3,2 farklı derleme yapılandırması kullanırken, bir iOS projesi 2,8 kullanır. Her yapılandırma kendi derleme bayraklarına, imzalama sertifikalarına ve sunucu URL'lerine sahip olabilir.

Build Config'in ana görevi, bu yapılandırmalar arasında geçişi otomatikleştirmektir. Geliştirici, sunucu URL'sini veya hata ayıklama bayrağını manuel olarak değiştirmek yerine, IDE'de istediği Build Variant'ı seçer ve derleme sistemi ilgili parametreleri otomatik olarak uygular.

Build Config'in doğru yapılandırılması, uygulama güvenliğini kritik şekilde etkiler: debug derlemeleri, release ikili dosyasından fiziksel olarak çıkarılması gereken ayrıntılı günlükler, veritabanı denetleyicisi ve hata ayıklama uç noktaları içerir. Gradle bunu Build Types aracılığıyla çözer: debug'da debuggable true bayrağı, release'de ise ProGuard ile minifyEnabled true bulunabilir. iOS, Swift Active Compilation Conditions aracılığıyla aynı sonuca ulaşır; burada #if DEBUG içindeki kod release yapılandırmasında derlenmez.

Android'de Build Config: Gradle ve BuildConfig

Android, iki temel kavramla Gradle derleme sistemini kullanır: Build Types ve Product Flavors. Bunların kombinasyonu Build Variants'ı oluşturur — her varyantın kendi tam derleme yapılandırması vardır.

Build Types: Debug ve Release

Build Type, uygulamanın nasıl oluşturulacağını tanımlayan bir yapılandırmadır. Varsayılan olarak Gradle iki tür oluşturur: debug (hata ayıklamalı, karartmasız) ve release (ProGuard/R8'li, yayın için imzalı). Geliştirici kendi türlerini ekleyebilir: 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: Uygulama sürümleri

Product Flavors, tek bir kod tabanından aynı uygulamanın farklı sürümlerini oluşturmaya olanak tanır. Örneğin: reklamlı ücretsiz sürüm, reklamsız ücretli sürüm ve ek özelliklere sahip kurumsal sürüm. Her flavor kendi applicationId'sine, kaynaklarına ve SDK bağımlılıklarına sahip olabilir.

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

BuildConfig Sınıfı: Koddan erişim

Her Build Variant için Gradle, yapılandırma alanlarına sahip bir BuildConfig sınıfı oluşturur. Geliştirici buildConfigField aracılığıyla özel alanlar eklerken, standart alanlar (DEBUG, APPLICATION_ID, BUILD_TYPE, VERSION_CODE, FLAVOR) otomatik olarak oluşturulur.

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

BuildConfig ayrıca derleme zamanında işlevselliği etkinleştirmeye veya devre dışı bırakmaya olanak tanır. Örneğin, bir FEATURE_CHAT_ENABLED alanı ekleyebilir ve çalışma zamanı kontrolleri ve kodda koşullu operatörler olmadan sohbeti yalnızca uygulamanın tam sürümünde etkinleştirebilirsiniz.

Ağ isteklerini hata ayıklamak için, DEBUG alanına sahip BuildConfig, HttpLoggingInterceptor'ı yalnızca debug derlemeleri için OkHttp'ye otomatik olarak eklemeye olanak tanır. Bu, geliştirici yanlışlıkla release derlemesinden önce günlük kaydını kaldırmayı unutsa bile, üretimde hiçbir HTTP isteğinin günlüğe kaydedilmemesini garanti eder.

iOS'te Build Config: Xcode ve Build Settings

iOS ekosisteminde Build Config, Xcode Build Settings aracılığıyla yönetilir — her parametrenin farklı yapılandırmalar (Debug, Release, Staging) için farklı değerlere sahip olabileceği bir parametre tablosu.

Xcode Build Configurations

Varsayılan olarak Xcode iki yapılandırma oluşturur: Debug (geliştirme için, optimizasyonsuz) ve Release (üretim için, -Os optimizasyonlu). Geliştirici Project > Info > Configurations menüsü aracılığıyla kendi yapılandırmalarını ekleyebilir.

Her yapılandırma için Build Settings yapılandırılır: derleyici bayrakları (OTHER_SWIFT_FLAGS, GCC_PREPROCESSOR_DEFINITIONS), kod imzalama (CODE_SIGN_IDENTITY), provisioning profilleri ve yetkilendirmeler. Xcode bu ayarları project.pbxproj dosyasına yazar.

xcconfig: Harici yapılandırma dosyaları

Build Settings'in kolay yönetimi için iOS geliştiricileri .xcconfig dosyalarını kullanır — KEY = VALUE formatında parametrelere sahip metin dosyaları. Bunlar Xcode için .env'nin benzeridir: değerler projeye bağlanır ve project.pbxproj'daki ayarları geçersiz kılar.

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: Çalışma zamanı yapılandırması

Build Config parametrelerinin bir kısmı Info.plist'e — iOS uygulama manifest dosyasına gider. Info.plist aracılığıyla URL şemaları, izinler (kamera, mikrofon), arka plan modları ve üçüncü taraf hizmet oturum açma yapılandırması ayarlanır.

xcconfig değerleri, $(VARIABLE_NAME) sözdizimi kullanılarak Info.plist'te değiştirilebilir. Örneğin, Info.plist'teki $(API_BASE_URL), etkin derleme yapılandırmasına göre genişletilir. Bu, tüm Apple platformları için ortam parametreleri yönetimini merkezileştirir.

CI/CD boru hatlarında Build Config

Modern projelerde Build Config, sürekli entegrasyon sistemleriyle entegre olur: GitLab CI, GitHub Actions, Bitrise, CircleCI. Her boru hattı, CI/CD sisteminin ortam değişkenleri aracılığıyla Build Config parametrelerini geçersiz kılabilir.

CI'da Gradle Build Config

Android için CI boru hattı, belirtilen Build Variant ile Gradle'ı çalıştırır: ./gradlew assembleFullRelease. İmzalama parametreleri CI değişkenleri aracılığıyla iletilir: STORE_PASSWORD, KEY_ALIAS. Gradle bunları çalışma zamanı ortamından okur ve build.gradle.kts'e ekler.

kotlin
// build.gradle.kts — CI değişkenlerinden okuma
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 için CI, yapılandırma bayraklarıyla xcodebuild kullanır: -configuration Release. İmzalama sertifikaları CI sırları aracılığıyla, profiller ise Apple Developer Portal API veya Fastlane match aracılığıyla sağlanır.

Fastlane aracı, Build Config yönetimini otomatikleştirir: xcconfig oluşturur, Info.plist'te sürümleri günceller, oluşturulan IPA'ları imzalar ve App Store Connect'e yükler. Fastlane gym (derleme) ve match (imzalama), iOS CI boru hatlarının standardıdır.

Bitrise Build Report (2025)'e göre, CI'da Build Config yapılandırılmış projeler, manuel derleme yapılandırma süresini %73 azaltır ve imzalama hatalarını %89 oranında düşürür. Otomatikleştirilmiş Build Config, üretime hazır bir boru hattının zorunlu bir öğesidir.

Bir diğer önemli husus, Build Config aracılığıyla sürüm oluşturmanın parametrelendirilmesidir. Gradle, versionCode ve versionName'i CI değişkenlerinden okumaya ve build.gradle.kts'e dinamik olarak eklemeye olanak tanıyarak geliştiriciler arasında sürüm senkronizasyon bozukluğunu ortadan kaldırır. iOS'te benzer bir görev, git etiketlerine veya CI'daki derleme numarasına dayalı olarak derleme numarasını artırabilen agvtool (Apple Generic Versioning Tool) aracılığıyla çözülür.

Sıkça Sorulan Sorular

Android'de Build Type ve Product Flavor arasındaki fark nedir?

Build Type (debug, release), uygulamanın nasıl oluşturulacağını tanımlar (hata ayıklamalı veya ayıklamasız, optimizasyonlu veya optimizasyonsuz). Product Flavor (demo, tam), hangi sürümün oluşturulacağını tanımlar (farklı applicationId, SDK, kaynaklar). Bunların kombinasyonuna Build Variant denir.

Build Config'ten Android koduna bir değer nasıl aktarılır?

build.gradle.kts'teki buildConfigField yöntemi aracılığıyla. Alan, otomatik olarak oluşturulan BuildConfig sınıfına eklenir ve kodda BuildConfig.ALAN_ADI olarak kullanılabilir. Dizeler için değerin, kaçışlı tırnak işaretleri içine alınması gerekir.

iOS'te birden çok ortam (development, staging, production) nasıl yapılandırılır?

.xcconfig dosyaları aracılığıyla — her ortam için bir tane. Project > Info > Configurations'da Debug/Staging/Release yapılandırmaları eklenir, her biri kendi xcconfig'ine başvurur. Değerler $(VAR_NAME) sözdizimi kullanılarak Info.plist'te değiştirilir.

Koddaki bayraklar yerine neden BuildConfig kullanılmalı?

BuildConfig, derleme yapılandırmasını uygulama mantığından ayırır. Koddaki bayraklar, ortam değiştirilirken manuel değişiklik ve yeniden derleme gerektirir. BuildConfig, IDE veya CI'da bir Build Variant seçildiğinde tüm parametreleri otomatik olarak değiştirir.

Farklı flavor'lar farklı bağımlılıklara sahip olabilir mi?

Evet, Gradle belirli flavor'lar için bağımlılıklar belirlemeye olanak tanır: demoImplementation ve fullImplementation. Demo sürümü bir analiz kitaplığı içerebilirken tam sürüm içermeyebilir. Bu, farklı flavor'lar için APK boyutunu azaltır.

Özet

  • Build Config, bir uygulamanın nasıl derleneceğini ve hangi ortam için olduğunu kontrol eden bir derleme parametreleri sistemidir.
  • Android, koddaki parametrelere erişmek için Build Types, Product Flavors ve oluşturulan BuildConfig sınıfıyla Gradle kullanır.
  • iOS, derleme bayraklarını, imzalamayı ve sunucu URL'lerini yapılandırmak için Xcode Build Settings ve .xcconfig dosyalarını kullanır.
  • Build Variant, kendi kaynaklarına sahip benzersiz bir derleme yapılandırması oluşturan Build Type ve Product Flavor kombinasyonudur.
  • CI/CD entegrasyonu, ortam değişkenleri aracılığıyla Build Config parametrelerinin iletilmesine olanak tanıyarak manuel kurulumu ortadan kaldırır.
  • Fastlane ve Gradle, her iki platform için imzalama, sürüm oluşturma ve yayınlamayı otomatikleştirir.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun