Kapt (Kotlin Ek Açıklama İşleme Aracı), Kotlin için özel desteği olmasa bile Java ek açıklama işleyicilerini Kotlin koduyla kullanmanıza olanak tanır. Bu işlem, Kotlin dosyalarınızdan işlemcilerin okuyabileceği Java taslakları oluşturularak yapılır. Bu taslak oluşturma işlemi, maliyetli bir işlemdir ve derleme hızı üzerinde önemli bir etkiye sahiptir.
KSP (Kotlin Sembol İşleme), kapt'a alternatif olarak Kotlin öncelikli bir araçtır. 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 yan yana çalıştırabilirsiniz. Taşıma işlemi modül modül, kitaplık kitaplık yapılabilir.
Taşıma adımlarına genel bakış:
- KSP desteği için kullandığınız kitaplıkları kontrol edin.
- KSP eklentisini projenize ekleme
- Ek açıklama işleyicileri KSP ile değiştirme
- 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. Dagger, Glide, Room ve Moshi gibi birçok popüler kitaplıkta bu durum geçerlidir ve diğer kitaplıklar da destek eklemektedir.
Belgelerdeki desteklenen kitaplıklar listesini kontrol edebilir veya kullandığınız kitaplıkların belgelerine ve Issue Tracker'ına bakabilirsiniz.
KSP eklentisini projenize ekleme
Öncelikle üst düzey build.gradle.kts dosyanızda KSP eklentisini tanımlayın.
Sürümlerin listesini KSP GitHub sayfasında bulabilirsiniz.
Kotlin
plugins { id("com.google.devtools.ksp") version "2.3.4" apply false }
Modern
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") }
Modern
plugins { id 'com.google.devtools.ksp' }
Ek açıklama işleyicileri KSP ile değiştirme
KSP etkinleştirildiğinde kapt kullanımlarını KSP ile değiştirmeye başlayabilirsiniz. Kitaplıkların büyük çoğunluğunda, ek açıklama işleyicileri ve KSP işleyicileri aynı yapıda sunulduğundan, bağımlılık bildiriminde kapt'ı ksp olarak değiştirmek yeterlidir.
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 projenizi senkronize edip derleyerek doğru şekilde çalışmaya devam edip etmediğini kontrol edin.
Dikkat edilmesi gereken yaygın sorunlardan bazıları aşağıda verilmiştir:
- Bazı kitaplıklar, kapt ve KSP ile tamamen aynı özellikleri desteklemez. Taşıma işleminden sonra kodunuzda sorun çıkarsa kitaplığın dokümanlarını inceleyin.
- KSP, kapt'tan daha doğru Kotlin türü bilgisine (ör. null değer alabilme hakkında) sahiptir. Bu, KSP işlemcilerinin tür gereksinimleri konusunda daha kesin olabileceği anlamına gelir. Bu durumda, derleme dosyalarınızı güncellemenin yanı sıra kaynak kodunuzda da bazı düzeltmeler yapmanız gerekebilir.
- Daha önce ek açıklama işleyicisine 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çimi kapt ve KSP arasında farklılık gösterebilir. 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 kapt ile eklenen bağımlılık kalmadığında kapt eklentisini kaldırın.
Eklenti bloğunda tanımlandıysa:
Kotlin
plugins {id("org.jetbrains.kotlin.kapt")}
Modern
plugins {id 'org.jetbrains.kotlin.kapt'}
Groovy kullanarak apply plugin söz dizimini kullanı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 }
Modern
kapt { correctErrorTypes true useBuildCache true }