Gradle KTS — nedir, Gradle için Kotlin DSL ve sözdizimi

Yazar: IT Sectr Yayınlanma: 2026-06-05 Okuma süresi: 8 dk

Gradle KTS, Groovy yerine Kotlin dilinde derleme betikleri yazmaya olanak tanıyan Gradle derleme sistemi için bir Kotlin DSL'dir. .gradle.kts uzantılı dosyalar statik tipleme, IntelliJ IDEA ve Android Studio'da otomatik tamamlama ve Kotlin sözdizimi aracılığıyla Gradle API'sine doğrudan erişim sağlar. Google, AGP 7.0'dan itibaren Android projeleri için KTS'yi önerir ve Kotlin Multiplatform, standart yapılandırma biçimi olarak KTS'yi kullanır. Gradle, 2025'e göre, yeni projelerin %60'ından fazlası derleme betikleri yazmak için Groovy yerine KTS'yi tercih ediyor.

Önemli Noktalar

  • Gradle KTS — .gradle.kts uzantılı Gradle derleme betikleri için Kotlin DSL.
  • Statik tipleme — çalışma zamanında değil, derleme zamanında yapılandırma doğrulaması.
  • IDE desteği — IntelliJ IDEA ve Android Studio'da otomatik tamamlama, gezinme ve yeniden düzenleme.
  • Google önerisi — KTS, AGP 7.0'dan itibaren Android projeleri için önerilir.
  • Geçiş — Groovy'den KTS'ye geçiş her modül için kademeli olarak yapılabilir.

Gradle KTS Nedir?

Gradle KTS, Gradle yapılandırma dosyalarını yazmak için Groovy'ye bir alternatif sunan bir Kotlin DSL'dir (Domain Specific Language). Groovy sözdizimi yerine geliştiriciler Kotlin kullanır — yapılandırmanın doğruluğunu derleme zamanında doğrulayan sıkı tipte bir dil. KTS ilk olarak 2018'de Gradle 5.0'da deneysel bir özellik olarak tanıtıldı ve Gradle 6.0'da kararlı hale geldi.

KTS'nin temel amacı, derleme betiklerinde Groovy'nin eksikliklerini ortadan kaldırmaktır. Groovy, yapılandırma hatalarının yalnızca bir görevi yürütürken çalışma zamanında ortaya çıktığı dinamik olarak tiplenmiş bir dildir. KTS, Kotlin'in statik tiplemesi sayesinde kod düzenleme aşamasında aynı hataları tespit etmeye olanak tanır. Ek olarak KTS, tam tip dokümantasyonuyla Gradle API'sine erişim sağlayarak karmaşık yapılandırma bloklarını öğrenmeyi ve kullanmayı önemli ölçüde basitleştirir.

KTS ekosistemi tüm ana araçlar tarafından desteklenir: Android Studio, IntelliJ IDEA, Kotlin eklentisiyle VS Code ve Gradle Build Tool. Tüm modern eklentiler (Android Gradle Plugin, Kotlin Multiplatform, Protobuf, Compose) açık tiplerle Kotlin dostu bir API sağlayarak KTS'yi yeni projeler için tercih edilen seçenek haline getirir.

Gradle KTS Nasıl Çalışır

Gradle KTS, .gradle.kts dosyalarını işlemek için Kotlin derleyicisini kullanır. Gradle uzantıyı tanır ve betikleri Kotlin betik motoruna iletir, bu motor onları sınıflara derler. Bu sınıflar daha sonra proje modelini oluşturmak için Gradle tarafından yürütülür. Groovy'den temel fark: KTS betikleri önceden derlenir, dinamik olarak yorumlanmaz, bu da görev yürütme başlamadan önce hataların tespit edilmesine olanak tanır.

KTS mimarisi kotlin-scripting'e dayanır. Her .gradle.kts dosyası, Gradle API'sinin örtük içe aktarmalarına sahip bir Kotlin betiğidir. Geliştirici herhangi bir Kotlin yapısını kullanabilir: uzantı işlevleri, lambda'lar, veri sınıfları ve hatta derleme betiği içinde yardımcı işlevler bildirebilir. Gradle, blokların tipli yapılandırması için bir dizi uzantı işlevi sağlar: dependencies, android, kotlin ve diğerleri.

kotlin
plugins {
    id("com.android.application") version "8.4.0"
    kotlin("android") version "2.0.21"
}

android {
    namespace = "com.itsectr.app"
    compileSdk = 34

    defaultConfig {
        applicationId = "com.itsectr.app"
        minSdk = 26
        targetSdk = 34
        versionCode = 1
        versionName = "1.0.0"
    }
}

dependencies {
    implementation(platform("androidx.compose:compose-bom:2024.06.00"))
    implementation("androidx.compose.ui:ui")
    implementation("androidx.core:core-ktx:1.13.1")
}

KTS'de Tür Dönüşümü

KTS ve Groovy arasındaki temel farklardan biri tür işlemedir. Groovy'de tüm yapılandırmalar Object kabul ederken, KTS'de belirli Kotlin türlerini kabul eder. Örneğin, compileSdk bir dize değil Int kabul eder. Bu, yanlış türlerle ilgili hataları ortadan kaldırır: Groovy'de compileSdk 34 ve compileSdk "34" aynı şekilde çalışırken, KTS'de yalnızca ilk varyant geçerlidir. Bu katılık, yapılandırmayı daha öngörülebilir ve belgelenmiş hale getirir.

Gradle KTS vs Groovy: Karşılaştırma

Groovy, Gradle için orijinal DSL idi ve hala tam olarak desteklenmektedir. Bununla birlikte KTS, onu yeni projeler için önerilen seçenek haline getiren çeşitli avantajlar sunar. Statik tipleme, IDE'de daha iyi düzenleme performansı ve daha katı sözdizimi, KTS'ye geçişin ana nedenleridir. Aynı zamanda Groovy, basit yapılandırmalar için kısalık avantajını korur.

Betik derlemesinden sonra KTS ve Groovy'de derleme performansı neredeyse aynıdır. KTS betikleri ilk çalıştırmada veya önbellek temizliğinden sonra derlenmesi daha uzun sürer, ancak sonraki derlemeler Groovy betikleriyle aynı hızda çalışır. Gradle derlenmiş KTS betiklerini derleme dizininde önbelleğe alır, bu nedenle yeniden derleme yalnızca betik değiştiğinde gerçekleşir.

ÖzellikGradle KTSGroovy DSL
TiplemeStatik, derleme zamanında kontrol edilirDinamik, çalışma zamanında kontrol edilir
IDE desteğiOtomatik tamamlama + gezinme + yeniden düzenlemeSınırlı (dinamik tipleme)
Blok sözdizimiAlıcılı lambda'lar (tipli)Closure (tipsiz)
Özellik atama= ile (compileSdk = 34)= işareti olmadan (compileSdk 34)
İlk derlemeDaha yavaş (Kotlin derlemesi)Daha hızlı (yorumlama)
Sonraki derlemelerAynı (betik önbelleği)Aynı

2026'da KTS ve Groovy arasındaki seçim açıktır: yeni projeler için — KTS. Google, JetBrains ve Gradle tüm yeni projeler için KTS'yi önerir. Groovy, yapılandırma hacmi veya KTS ile uyumsuz belirli eklentiler nedeniyle geçişin pratik olmadığı eski projelerin bakımı için geçerliliğini korur.

Kod Örnekleri: KTS'de Derleme Betikleri

Android, Kotlin Multiplatform ve Compose Multiplatform için KTS'deki tipik yapılandırma bloklarına bakalım. KTS ile bir Android projesi, buildTypes ve productFlavors yapılandırmasında açık tür belirtimi gerektirir. Aşağıdaki örnek, iki çeşidi olan bir uygulamanın kurulumunu göstermektedir.

kotlin
android {
    buildTypes {
        val release = getByName("release") {
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
        getByName("debug") {
            applicationIdSuffix = ".debug"
        }
    }

    flavorDimensions += "version"
    productFlavors {
        register("demo") {
            dimension = "version"
            versionNameSuffix = "-demo"
        }
        register("full") {
            dimension = "version"
        }
    }
}

Kotlin Multiplatform için KTS zorunludur — Groovy, çoklu platform modüllerinin yapılandırmasını doğru şekilde desteklemez. KMM modül yapılandırması, hedef platformların ve kaynak kümelerinin ayarlanmasını içerir. Aşağıdaki örnek, iOS ve Android ile paylaşılan modül yapılandırmasını göstermektedir.

kotlin
kotlin {
    androidTarget {
        compilations.all {
            kotlinOptions {
                jvmTarget = "17"
            }
        }
    }

    listOf(
        iosX64(),
        iosArm64(),
        iosSimulatorArm64()
    ).forEach { iosTarget ->
        iosTarget.binaries.framework {
            baseName = "Shared"
            isStatic = true
        }
    }

    sourceSets {
        commonMain.dependencies {
            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0")
        }
        androidMain.dependencies {
            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0")
        }
    }
}

Yardımcı İşlevler ve Özel Görevler

KTS, derleme betiği içinde yardımcı Kotlin işlevleri bildirmeye olanak tanır. Bu, imza yapılandırmaları veya sürüm yönetimi gibi tekrarlayan yapılandırmalar için özellikle kullanışlıdır. Statik tipleme sayesinde, bu işlevler derleme zamanında parametre doğrulamasıyla çağrılabilir ve Google Play'de yayınlamadan önce imza yapılandırmalarındaki hataları ortadan kaldırır.

kotlin
fun Project.configureSigning() {
    android {
        signingConfigs {
            register("release") {
                storeFile = file("release.keystore")
                storePassword = System.getenv("KEYSTORE_PASSWORD")
                keyAlias = System.getenv("KEY_ALIAS")
                keyPassword = System.getenv("KEY_PASSWORD")
            }
        }
    }
}

// build.gradle.kts içinde kullanım
configureSigning()

Groovy'den KTS'ye Geçiş

Groovy'den KTS'ye geçiş, kademeli olarak yapılabilen bir süreçtir. Gradle, bazı modüllerin Groovy (build.gradle) ve bazılarının KTS (build.gradle.kts) kullandığı karma projeleri destekler. settings.gradle ve kök build.gradle, modül eklentilerine bağlı olmadıkları için önce geçirilebilir. Google, geçişe settings.gradle.kts, ardından kök build.gradle.kts ve daha sonra modüllerle başlanmasını önerir.

Geçişin ana adımları şunları içerir: closure sözdizimini lambda ile değiştirme, atama için = işaretleri ekleme, dize anahtarlarını tipli sabitlerle değiştirme ve açık değişken tiplemesi. Android Studio basit bloklar için otomatik Groovy→KTS dönüşümü sağlar, ancak iç içe closure'lar içeren karmaşık yapılandırmalar manuel yeniden yazma gerektirir.

Groovy (önceki)KTS (sonraki)
compileSdk 34compileSdk = 34
buildTypes { release { ... } }buildTypes { getByName("release") { ... } }
implementation 'com.android.x:y:1.0'implementation("com.android.x:y:1.0")
flavorDimensions "version"flavorDimensions += "version"
productFlavors { demo { ... } }productFlavors { register("demo") { ... } }
def vsn = "1.0"val vsn = "1.0"

Tipik geçiş sorunları, Kotlin karşılığı olmayan örtük Groovy yöntem çağrılarını ve Kotlin dostu bir API sağlamayan eklentileri içerir. İlk sorun için Gradle, withGroovyBuilder aracılığıyla uyumluluk sağlar — KTS'den Groovy yöntemlerini çağırmaya olanak tanıyan bir mekanizma. İkincisi için — eklenti güncellemesini beklemek veya tam geçişe kadar bir Groovy modülünde kullanmak gerekir.

Kotlin Multiplatform için Gradle KTS

Kotlin Multiplatform, KTS'nin zorunlu bir gereklilik olduğu birincil projedir. kotlin multiplatform eklentisi, yalnızca Kotlin DSL aracılığıyla kullanılabilen hedef platformları, kaynak kümelerini ve çerçeve ikili dosyalarını yapılandırmak için uzantılar sağlar. Groovy, çoklu platform yapılandırmasını doğru şekilde desteklemez, bu nedenle KMM projeleri yalnızca KTS kullanır.

KTS'de KMM yapılandırması standart olmayan bloklar içerir: platformları belirtmek için kotlin.target, ortak ve platforma özgü kodu düzenlemek için kotlin.sourceSets, CocoaPods entegrasyonu için kotlin.cocoapods ve JDK seçimi için kotlin.jvmToolchain. Her blok, Android Studio'da otomatik tamamlama ile sıkı bir şekilde tiplenmiş bir API'ye sahiptir ve bu, birden çok platforma sahip karmaşık KMM proje yapılandırması için özellikle değerlidir.

kotlin
kotlin {
    iosArm64()
    iosSimulatorArm64()
    iosX64()

    cocoapods {
        summary = "Shared Kotlin module"
        homepage = "https://itsectr.com"
        framework {
            baseName = "Shared"
            isStatic = false
        }
        pod("Alamofire") {
            version = "5.9"
        }
    }
}

KTS statik tiplemesi sayesinde KMM geliştiricileri, kaynak kümeleri ve bağımlılıklar için otomatik tamamlama, çerçeve yapılandırmasının tür denetimi ve platform adlarını yeniden düzenleme yeteneği elde eder. KTS ayrıca hata ayıklamayı basitleştirir: KMM yapılandırmasındaki hatalar, hataların bir Gradle görevi yürütülene kadar gizli kalabildiği Groovy'nin aksine, net mesajlarla Kotlin derleme hataları olarak görünür.

Sıkça Sorulan Sorular

Groovy'den KTS'ye geçmek zorunlu mu?

Kotlin Multiplatform projeleri için zorunludur. Android ve sunucu projeleri için Groovy desteklenmeye devam eder, ancak Google ve Gradle, statik tipleme ve daha iyi IDE desteği nedeniyle yeni projeler için KTS'yi önerir.

Aynı projede Groovy ve KTS kullanılabilir mi?

Evet, Gradle karma projeleri destekler. Her modül kendi DSL'sini kullanabilir. settings.gradle veya settings.gradle.kts kök DSL'yi tanımlar, ancak modüller bağımsızdır. Bu, kademeli geçişe olanak tanır.

KTS neden Groovy'den daha yavaş derlenir?

KTS, yürütmeden önce Kotlin derlemesi gerektirir. Bu, ilk çalıştırmada veya önbellek temizliğinden sonra ek süre alır. Sonraki tüm derlemeler, Groovy ile karşılaştırılabilir hızda önbelleğe alınmış sınıfları kullanır.

Hangi eklentiler KTS ile uyumsuz?

Modern eklentilerin çoğu uyumludur. Groovy'ye özgü API veya Kotlin karşılığı olmayan Closure kullanan eski eklentilerle sorunlar ortaya çıkar. Bu tür eklentiler için withGroovyBuilder() kullanın veya modülü Groovy'de bırakın.

KTS derleme performansını nasıl etkiler?

İlk betik derlemesinden sonra derleme performansı Groovy ile aynıdır. Gradle derlenmiş KTS betiklerini önbelleğe alır ve yeniden derleme yalnızca değiştiklerinde gerçekleşir. Modül derleme hızındaki fark ihmal edilebilir düzeydedir.

Özet

  • Gradle KTS — Gradle derleme betikleri için Kotlin DSL, statik tipleme ve IDE otomatik tamamlama sağlar.
  • Statik tipleme, görev yürütme sırasında değil, derleme zamanında yapılandırma hatalarını tespit etmeye olanak tanır.
  • Sözdizimi Groovy'den farklıdır: zorunlu = işareti, getByName işlevi, çeşitler için register.
  • Kotlin Multiplatform KTS gerektirir — Groovy çoklu platform yapılandırmasını doğru desteklemez.
  • Geçiş, karma proje desteği sayesinde aşamalı olarak yapılabilir.
  • Derleme performansı ilk betik derlemesinden sonra Groovy ile aynıdır.
  • Tüm yeni projeler için, özellikle KMM ve AGP 7.0+ ile Android için KTS kullanın.

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