Kapt (Kotlin Annotation Processing Tool) ti consente di utilizzare i processori di annotazioni Java con il codice Kotlin, anche se questi processori non supportano Kotlin in modo specifico. A questo scopo, vengono generati stub Java dai file Kotlin che i processori possono leggere. Questa generazione di stub è un'operazione costosa e ha un impatto significativo sulla velocità di compilazione.
KSP (Kotlin Symbol Processing) è un'alternativa a kapt che dà la priorità a Kotlin. KSP analizza direttamente il codice Kotlin, che è fino a due volte più veloce. Inoltre, comprende meglio le costruzioni del linguaggio Kotlin.
Puoi eseguire kapt e KSP insieme nel tuo progetto durante la migrazione e la migrazione può essere eseguita modulo per modulo, libreria per libreria.
Ecco una panoramica dei passaggi di migrazione:
- Controlla le librerie che utilizzi per il supporto di KSP
- Aggiungere il plug-in KSP al progetto
- Sostituire i processori di annotazioni con KSP
- Rimuovere il plug-in kapt
Controlla le librerie che utilizzi per il supporto di KSP
Per iniziare, controlla se le librerie che utilizzi con kapt supportano già KSP. Questo è il caso di molte librerie popolari (tra cui Dagger, Glide, Room e Moshi) e altre stanno aggiungendo il supporto.
Puoi consultare l'elenco delle librerie supportate nella documentazione oppure fare riferimento alla documentazione e al tracker dei problemi delle librerie che stai utilizzando.
Aggiungere il plug-in KSP al progetto
Innanzitutto, dichiara il plug-in KSP nel file build.gradle.kts di primo livello.
Puoi trovare un elenco delle release nella pagina GitHub di KSP.
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 }
Quindi, attiva KSP nel file build.gradle.kts a livello di modulo:
Kotlin
plugins { id("com.google.devtools.ksp") }
Groovy
plugins { id 'com.google.devtools.ksp' }
Sostituire i processori di annotazioni con KSP
Con KSP abilitato, puoi iniziare a sostituire gli utilizzi di kapt con KSP. Per la stragrande maggioranza delle librerie, è sufficiente modificare kapt in ksp nella dichiarazione di dipendenza, poiché forniscono il processore di annotazioni e il processore KSP nello stesso artefatto.
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' }
Dopo aver eseguito la migrazione a KSP, sincronizza e compila il progetto per verificare che funzioni ancora correttamente.
Alcuni problemi comuni da tenere in considerazione:
- Alcune librerie non supportano lo stesso insieme di funzionalità con KAPT e KSP. Se il codice smette di funzionare dopo la migrazione, controlla la documentazione della libreria.
- KSP dispone di informazioni sui tipi Kotlin più accurate rispetto a kapt (ad esempio sulla possibilità di valori null), il che significa che i processori KSP possono essere più precisi sui requisiti dei tipi. Oltre ad aggiornare i file di build, potrebbe essere necessario apportare alcune correzioni al codice sorgente.
- Se in precedenza passavi argomenti al processore di annotazioni, ora probabilmente dovrai passarli a KSP. Tieni presente che il formato degli argomenti potrebbe variare tra kapt e KSP. Per scoprire di più, consulta la documentazione di KSP e la documentazione della libreria che stai utilizzando.
Rimuovere il plug-in kapt
Quando non hai più dipendenze incluse in kapt nel modulo,
rimuovi il plug-in kapt.
Se è stato dichiarato in un blocco di plug-in:
Kotlin
plugins {id("org.jetbrains.kotlin.kapt")}
Groovy
plugins {id 'org.jetbrains.kotlin.kapt'}
Se utilizzava la sintassi del plug-in apply utilizzando Groovy:
apply plugin: 'kotlin-kapt'
Devi anche rimuovere qualsiasi configurazione residua relativa a kapt, ad esempio:
Kotlin
kapt { correctErrorTypes = true useBuildCache = true }
Groovy
kapt { correctErrorTypes true useBuildCache true }