Android Projesinde build.gradle Nasıl Yapılandırılır

Kerem Aydın·7 Temmuz 2026·⏱2 dk

build.gradle dosyalarında AGP ve Kotlin sürümleri, compileSdk/minSdk, bağımlılıklar ve derleme kuralları belirlenir; yani APK/AAB'nin doğru şekilde derlenmesi için gereken her şey burada tanımlanır. Aşağıda, doğrudan kopyalayıp kullanabileceğiniz pratik bir yapı ve hazır şablonlar yer almaktadır.

Proje Seviyesi (kök): Eklentiler ve Depolar

Kök dizindeki dosya, eklenti sürümlerini ve ortak depoları yönetir. plugins bloğu, AGP ve Kotlin sürümlerini sabitler; bu durum güncellemeler sırasında oluşabilecek çakışmaları önler.

Örnek (settings.gradle.kts veya kökteki build.gradle ile eklentiler):

plugins {
    id 'com.android.application' version '8.7.2' apply false
    id 'com.android.library'     version '8.7.2' apply false
    id 'org.jetbrains.kotlin.android' version '2.0.20' apply false
}

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}

Pratik tavsiye: Eklenti sürümlerini kök düzeyde sabitleyin ve bunları modül bazlı build dosyalarında tekrarlamayın.

Sürüm katalogları (libs.versions.toml) aracılığıyla sürümleri yönetmek için settings.gradle(.kts) kullanın; böylece sürüm yönetimi daha kolay ve merkezi hale gelir.

Uygulama Seviyesi: android { }, dependencies ve buildTypes

Ana dosya app/build.gradle(.kts)'dir. Burada namespace, compileSdk, defaultConfig, buildTypes, signingConfigs ve bağımlılıklar belirtilir.

Örnek (Groovy):

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id 'kotlin-kapt'
}

android {
    namespace 'com.example.myapp'
    compileSdk 36

    defaultConfig {
        applicationId "com.example.myapp"
        minSdk 24
        targetSdk 36
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
    kotlinOptions { jvmTarget = "17" }
}

Bağımlılık örnekleri (amaçlarına göre gruplayın):

dependencies {
    // Core
    implementation 'androidx.core:core-ktx:1.15.0'
    implementation 'androidx.appcompat:appcompat:1.7.0'

    // Network
    implementation 'com.squareup.retrofit2:retrofit:2.11.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.11.0'

    // DI
    implementation 'com.google.dagger:hilt-android:2.52'
    kapt 'com.google.dagger:hilt-compiler:2.52'
}

Derlemeler, flavor'lar, imzalama ve CI

  • Product flavors, paralel kurulumlar için applicationIdSuffix ve versionNameSuffix kullanır:
productFlavors {
    free { applicationIdSuffix ".free"; versionNameSuffix "-free" }
    pro  { applicationIdSuffix ".pro" }
}
  • CI için signingConfigs: Gizli bilgileri ortam değişkenlerinde saklayın, depo dosyalarında değil:
signingConfigs {
    release {
        storeFile file(System.getenv("KEYSTORE_PATH"))
        storePassword System.getenv("KEYSTORE_PASS")
        keyAlias System.getenv("KEY_ALIAS")
        keyPassword System.getenv("KEY_PASS")
    }
}
  • CI'da derleme: ./gradlew assembleRelease veya bundleRelease ile AAB derlemesi yapın. Hızlandırmak için --no-daemon parametresini ve Gradle önbelleğini etkinleştirin.

Eski yapılandırmaları kopyalamayın: AGP 8+ Java 17 ve uyumlu eklentiler gerektirir.

Sık Karşılaşılan Hatalar

  • Kütüphane sürüm çakışmaları → dependencyConstraints veya resolutionStrategy kullanın.
  • Depoda gizli bilgilerin (keystore, şifreler) sabit kodlanması → CI secrets içinde saklayın.
  • Uyumsuz JDK/AGP → Güncelleme öncesi JavaVersion ve AGP sürümlerini kontrol edin.
  • Release için unutulmuş minify/proguard → APK boyutunu artırır ve sızıntı risklerini yükseltir.

SSS

  • Kotlin DSL'e nasıl geçilir?
    build.gradle dosyasını build.gradle.kts'e taşıyın, tür güvenli eklentiler kullanın ve bağımlılık sözdizimini güncelleyin; CI branch'ında test edin.

  • Bir kütüphane güncellendikten sonra uygulama neden çöker?
    Genellikle API değişiklikleri veya transitif bağımlılık çakışmalarından kaynaklanır; sürümleri sabitleyin ve changelog'u kontrol edin.

  • Debug için minifyEnabled etkinleştirilmeli mi?
    Hayır. Minify release için faydalıdır (optimizasyon ve obfuscation), debug'da hata ayıklamayı zorlaştırır.

Bu set, build.gradle yapılandırmasına ilişkin çoğu görevi kapsar: sürümleri kökte sabitleyin, bağımlılıkları amaçlarına göre gruplayın, gizli bilgileri depo dışında saklayın ve derlemeleri yerel ortamla aynı JDK üzerinde CI'da test edin.