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ış:
- KSP desteği için kullandığınız kitaplıkları kontrol edin
- KSP eklentisini projenize ekleme
- Not işlemcilerini 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. 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 }