Kapt'tan KSP'ye geçiş

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ış:

  1. KSP desteği için kullandığınız kitaplıkları kontrol edin.
  2. KSP eklentisini projenize ekleme
  3. Ek açıklama işleyicileri 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. 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
}

Ek kaynaklar