Kapt (narzędzie do przetwarzania adnotacji Kotlin) umożliwia korzystanie z procesory adnotacji Java z kodem Kotlin, nawet jeśli nie mają obsługa języka Kotlin. Jest to możliwe dzięki generowaniu atrakcji Javy z Twojego serwera pliki Kotlin, które procesory mogą odczytać. To generacja namiętna kosztowne rozwiązanie i ma znaczny wpływ na szybkość kompilacji.
KSP (Kotlin Symbol Processing) to alternatywa oparta na języku Kotlin kapt. KSP analizuje bezpośrednio kod Kotlin, co daje nawet 2x . Pozwala też lepiej zrozumieć, jak twórczyni konstrukcjami językowymi.
Kapt jest teraz w trybie konserwacji i zalecamy migrację z kapt do KSP gdy tylko jest to możliwe. W większości przypadków migracja wymaga tylko wprowadzenia zmian konfiguracji kompilacji projektu.
Kapt i KSP można uruchamiać równolegle w projekcie migracja danych może być przeprowadzana między modułami, a bibliotekami.
Oto omówienie etapów migracji:
- Sprawdzanie bibliotek, których używasz do obsługi KSP
- Dodawanie wtyczki KSP do projektu
- Zastąp procesory adnotacji KSP
- Usuń wtyczkę kapt
Sprawdzanie bibliotek, których używasz do obsługi KSP
Na początek sprawdź, czy biblioteki, których używasz z kapt, mają już KSP . Dotyczy to wielu popularnych bibliotek (w tym Dagger, Glide, Room, i Moshi), a inni dodają pomoc.
Listę obsługiwanych bibliotek znajdziesz w lub zapoznaj się z dokumentacją bibliotek którego używasz.
Dodawanie wtyczki KSP do projektu
Najpierw zadeklaruj wtyczkę KSP w pliku build.gradle.kts
najwyższego poziomu.
Pamiętaj, aby wybrać wersję KSP zgodną z Kotlinem Twojego projektu
wersji. Listę wersji znajdziesz na stronie KSP GitHub”.
.
Kotlin
plugins { id("com.google.devtools.ksp") version "1.8.10-1.0.9" apply false }
Odlotowe
plugins { id 'com.google.devtools.ksp' version '1.8.10-1.0.9' apply false }
Następnie włącz KSP w pliku build.gradle.kts
na poziomie modułu:
Kotlin
plugins { id("com.google.devtools.ksp") }
Odlotowe
plugins { id 'com.google.devtools.ksp' }
Zastąp procesory adnotacji KSP
Po włączeniu KSP możesz zacząć zastępować użycia kapt za pomocą KSP. Dla VAST większości bibliotek, wymaga to jedynie zmiany kapt na ksp w zależności zgodnie z oferowaną przez nas ten sam artefakt.
Kotlin
dependencies {kapt("androidx.room:room-compiler:2.5.0")ksp("androidx.room:room-compiler:2.5.0") }
Odlotowe
dependencies {kapt 'androidx.room:room-compiler:2.5.0'ksp 'androidx.room:room-compiler:2.5.0' }
Po przejściu do KSP zsynchronizuj i skompiluj projekt, aby sprawdzić, czy nadal działa .
Typowe problemy:
- Niektóre biblioteki nie obsługują dokładnie tego samego zestawu funkcji w przypadku kapt i KSP. Jeśli po migracji kod ulegnie awarii, zapoznaj się z dokumentacją biblioteki.
- KSP udostępnia dokładniejsze informacje o typie Kotlin niż kapt (na przykład nullability), co oznacza, że procesory KSP mogą dokładniej określać typ . Może to wymagać także poprawek w kodzie źródłowym, .
- Jeśli do procesora adnotacji były wcześniej przekazywane argumenty, musisz teraz przekazać te argumenty do KSP. Pamiętaj, że format może mieć różne argumenty między kapt a KSP. Zapoznaj się z kluczem KSP dokumentacji i biblioteki, którego używasz, aby dowiedzieć się więcej.
Usuń wtyczkę kapt
Jeśli w Twoim module nie będzie już zależności zawartych w tabeli kapt
,
usuń wtyczkę kapt.
Jeśli została zadeklarowana w bloku wtyczek:
Kotlin
plugins {id("org.jetbrains.kotlin.kapt")}
Odlotowe
plugins {id 'org.jetbrains.kotlin.kapt'}
Jeśli użyto składni stosowania wtyczki za pomocą Groovy:
apply plugin: 'kotlin-kapt'
Usuń też wszystkie pozostałe konfiguracje związane z kapt, takie jak:
Kotlin
kapt { correctErrorTypes = true useBuildCache = true }
Odlotowe
kapt { correctErrorTypes true useBuildCache true }
Dodatkowe materiały
- Dokumentacja KSP w witrynie Kotlinlang.org
- Klucz do wyróżnienia w usłudze GitHub
- kapt na stronie Kotlinlang.org -->