Kapt'tan KSP'ye geçiş

Kapt (Kotlin Ek Açıklama İşleme Aracı), Kotlin için özel destek sunmasa bile Java ek açıklama işlemcilerini Kotlin koduyla kullanabilmenizi sağlar. Bu, Kotlin dosyalarınızdan işlemcilerin okuyabileceği Java artıkları oluşturarak yapılır. Bu saplama oluşturma işlemi pahalı bir işlemdir ve derleme hızı üzerinde önemli bir etkiye sahiptir.

KSP (Kotlin Symbol İşleme), kapt'ın Kotlin'e öncelik veren alternatifidir. KSP, Kotlin kodunu doğrudan analiz eder. Bu işlem 2 kata kadar daha hızlıdır. Ayrıca, Kotlin'in dil yapılarını daha iyi anlamış.

Kapt şu anda bakım modunda. Mümkün olduğunda kapt'tan KSP'ye geçmenizi öneririz. Çoğu durumda, bu taşıma işlemi yalnızca projenizin derleme yapılandırmasında değişiklik yapılmasını gerektirir.

Taşıma sırasında projenizde kapt ve KSP'yi yan yana çalıştırabilirsiniz. Taşıma işlemi ise modül ve kitaplık bazında gerçekleştirilebilir.

Taşıma adımlarına ilişkin bir genel bakışı burada bulabilirsiniz:

  1. KSP desteği için kullandığınız kitaplıkları kontrol etme
  2. KSP eklentisini projenize ekleyin
  3. Ek açıklama işlemcilerini KSP ile değiştirme
  4. kapt eklentisini kaldırın

KSP desteği için kullandığınız kitaplıkları kontrol etme

Başlamak için, kapt ile kullandığınız kitaplıkların zaten KSP desteğine sahip olup olmadığını kontrol edin. Bu durum, birçok popüler kitaplık (Dagger, Glide, Room ve Moshi dahil) için geçerlidir ve diğerleri tarafından desteklenmeye devam etmektedir.

Belgelerde desteklenen kitaplıkların listesini kontrol edebilir veya kullandığınız kitaplıkların dokümanlarına ve sorun izleyicisine bakabilirsiniz.

KSP eklentisini projenize ekleyin

Öncelikle, üst düzey build.gradle.kts dosyanızda KSP eklentisini tanımlayın. Projenizin Kotlin sürümüyle uyumlu bir KSP sürümü seçtiğinizden emin olun. Sürümlerin listesini KSP GitHub sayfasında bulabilirsiniz.

Kotlin

plugins {
    id("com.google.devtools.ksp") version "1.8.10-1.0.9" apply false
}

Modern

plugins {
    id 'com.google.devtools.ksp' version '1.8.10-1.0.9' apply false
}

Ardından, modül düzeyindeki build.gradle.kts dosyanızda KSP'yi etkinleştirin:

Kotlin

plugins {
    id("com.google.devtools.ksp")
}

Modern

plugins {
    id 'com.google.devtools.ksp'
}

Ek açıklama işlemcilerini KSP ile değiştirme

KSP etkinleştirildiğinde, kapt kullanımlarını KSP ile değiştirmeye başlayabilirsiniz. Ek açıklama işlemcisini ve KSP işlemcisini aynı yapıda gönderen kitaplıkların çok büyük bir kısmında bu işlem, bağımlılık bildiriminde kapt'ın ksp olarak değiştirilmesini gerektirir.

Kotlin

dependencies {
    kapt("androidx.room:room-compiler:2.5.0")
    ksp("androidx.room:room-compiler:2.5.0")
}

Modern

dependencies {
    kapt 'androidx.room:room-compiler:2.5.0'
    ksp 'androidx.room:room-compiler:2.5.0'
}

KSP'ye geçtikten sonra, hâlâ düzgün çalışıp çalışmadığını görmek için projenizi senkronize edip oluşturun.

Dikkat edilmesi gereken bazı yaygın sorunlar:

  • Bazı kitaplıklar, kapt ve KSP ile tam olarak aynı özellik grubunu desteklemez. Kodunuz taşıma işleminden sonra bozulursa kitaplıktaki dokümanları kontrol edin.
  • KSP, kapt'tan daha doğru Kotlin türü bilgilerine sahiptir (örneğin, boş değer olabilir). Bu da KSP işlemcilerinin tür gereksinimleri hakkında daha kesin sonuçlar verebileceği anlamına gelir. Bu işlem, derleme dosyalarınızı güncellemenin yanı sıra kaynak kodunuzda da bazı düzeltmeler yapmanızı gerektirebilir.
  • Önceden ek açıklama işlemcisine bağımsız değişkenler ilettiyseniz bu bağımsız değişkenleri artık KSP'ye aktarmanız gerekir. Bağımsız değişkenlerin biçiminin kapt ve KSP arasında farklı olabileceğini unutmayın. Daha fazla bilgi edinmek için KSP belgelerini inceleyin ve kullandığınız kitaplığın belgelerine bakın.

kapt eklentisini kaldırın

Artık modülünüzde kapt kapsamındaki herhangi bir bağımlılığınız yoksa kapt eklentisini kaldırın.

Bir eklenti bloğunda tanımlanmışsa:

Kotlin

plugins {
    id("org.jetbrains.kotlin.kapt")
}

Modern

plugins {
    id 'org.jetbrains.kotlin.kapt'
}

Groovy kullanarak "uygulama eklentisi söz dizimini" kullanıyorsa:

apply plugin: 'kotlin-kapt'

Ayrıca, kapt ile ilgili kalan yapılandırmaları da kaldırmalısınız. Örneğin:

Kotlin


kapt {
    correctErrorTypes = true
    useBuildCache = true
}

Modern


kapt {
    correctErrorTypes true
    useBuildCache true
}

Ek kaynaklar