Kapt'tan KSP'ye geçiş

Kapt (Kotlin Annotation Processing Tool), Kotlin için özel destek sunmasalar bile Java ek açıklama işlemcilerini Kotlin koduyla kullanmanıza olanak tanır. Bu işlem, Kotlin dosyalarınızdan işlemcilerin okuyabileceği Java sapları oluşturularak yapılır. Bu saplama oluşturma işlemi maliyetli bir işlemdir ve derleme hızını önemli ölçüde etkiler.

KSP (Kotlin Symbol Processing), kapt'ye Kotlin öncelikli bir alternatiftir. KSP, Kotlin kodunu doğrudan analiz eder. Bu da 2 kata kadar daha hızlıdır. Ayrıca Kotlin dil yapılarını daha iyi anlar.

Taşıma işlemi sırasında projenizde kapt ve KSP'yi birlikte çalıştırabilirsiniz. Taşıma işlemi modül modül, kitaplık kitaplık yapılabilir.

Taşıma adımlarına genel bakış:

  1. KSP desteği için kullandığınız kitaplıkları kontrol edin
  2. KSP eklentisini projenize ekleme
  3. Not işlemcilerini KSP ile değiştirme
  4. kapt eklentisini kaldırma

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

Başlamak için kapt ile kullandığınız kitaplıkların KSP desteği 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 de destek eklemektedir.

Desteklenen kitaplıkların listesini dokümanlarda inceleyebilir veya kullandığınız kitaplıkların dokümanlarına ve sorun izleyicisine göz atabilirsiniz.

KSP eklentisini projenize ekleme

Öncelikle, KSP eklentisini üst düzey build.gradle.kts dosyanızda bildirin. Yayınların listesini KSP GitHub sayfasında bulabilirsiniz.

Kotlin

plugins {
    id("com.google.devtools.ksp") version "2.3.4" apply false
}

Groovy

plugins {
    id 'com.google.devtools.ksp' version '2.3.4' apply false
}

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

Kotlin

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

Groovy

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

Not işlemcilerini KSP ile değiştirme

KSP etkinleştirildikten sonra kapt kullanımlarını KSP ile değiştirmeye başlayabilirsiniz. Kitaplıkların büyük bir çoğunluğu, ek açıklama işlemcilerini ve KSP işlemcilerini aynı yapıda gönderdikleri için bu işlem için bağımlılık bildiriminde kapt yerine ksp yazılması yeterlidir.

Kotlin

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

Groovy

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

KSP'ye geçtikten sonra, projenizin hâlâ doğru şekilde çalışıp çalışmadığını görmek için projenizi senkronize edin ve derleyin.

Dikkat edilmesi gereken yaygın sorunlardan bazıları:

  • Bazı kitaplıklar, kapt ve KSP ile tam olarak aynı özellik grubunu desteklemez. Kodunuz taşıma işleminden sonra bozulursa kitaplığın dokümanlarını inceleyin.
  • KSP, kapt'a kıyasla daha doğru Kotlin türü bilgilerine (ör. nullability hakkında) sahiptir. Bu nedenle KSP işlemcileri, tür gereksinimleri konusunda daha hassas olabilir. Bu işlem, derleme dosyalarınızı güncellemenin yanı sıra kaynak kodunuzda da bazı düzeltmeler yapmanızı gerektirebilir.
  • Daha önce ek açıklama işlemcisine bağımsız değişkenler iletiyorsanız artık bu bağımsız değişkenleri KSP'ye iletmeniz gerekir. Bağımsız değişkenlerin biçiminin kapt ile KSP arasında farklılık gösterebileceğini unutmayın. Daha fazla bilgi edinmek için KSP belgelerine ve kullandığınız kitaplığın belgelerine göz atın.

kapt eklentisini kaldırma

Modülünüzde artık kapt ile eklenmiş bağımlılık kalmadığında kapt eklentisini kaldırın.

Bir eklenti bloğunda bildirilmişse:

Kotlin

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

Groovy

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

Groovy kullanılarak apply eklenti söz dizimi kullanılıyorsa:

apply plugin: 'kotlin-kapt'

Ayrıca kapt ile ilgili kalan yapılandırmaları da kaldırmanız gerekir. Örneğin:

Kotlin


kapt {
    correctErrorTypes = true
    useBuildCache = true
}

Groovy


kapt {
    correctErrorTypes true
    useBuildCache true
}

Ek kaynaklar