Kapt (lo strumento di elaborazione delle annotazioni Kotlin) ti consente di utilizzare gli elaboratori di annotazioni Java con il codice Kotlin, anche se questi elaboratori non hanno un supporto specifico per Kotlin. Questo viene fatto generando stub Java dai file Kotlin che i processori possono poi leggere. Questa generazione di stub è un'operazione costosa e ha un impatto significativo sulla velocità di compilazione.
KSP (Kotlin Symbol Processing) è un'alternativa a Kotlin per kapt. KSP analizza direttamente il codice Kotlin, il che è fino a due volte più rapido. Inoltre, ha una migliore comprensione dei costrutti del linguaggio Kotlin.
Puoi eseguire kapt e KSP contemporaneamente nel tuo progetto durante la migrazione, che può essere eseguita modulo per modulo, libreria per libreria.
Ecco una panoramica dei passaggi di migrazione:
- Controlla le librerie che utilizzi per il supporto KSP
- Aggiungere il plug-in KSP al progetto
- Sostituire i processori di annotazioni con KSP
- Rimuovi il plug-in kapt
Controlla le librerie che utilizzi per il supporto 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 controllare l'elenco delle librerie supportate nella documentazione o consultare la documentazione e il tracker dei problemi delle librerie che utilizzi.
Aggiungere il plug-in KSP al progetto
Innanzitutto, dichiara il plug-in KSP nel file build.gradle.kts
di primo livello.
Assicurati di scegliere una versione KSP in linea con la versione Kotlin del tuo progetto. Puoi trovare un elenco delle release nella pagina GitHub di KSP.
Kotlin
plugins { id("com.google.devtools.ksp") version "2.0.21-1.0.27" apply false }
Groovy
plugins { id 'com.google.devtools.ksp' version '2.0.21-1.0.27' 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 maggior parte delle librerie, è sufficiente cambiare kapt in ksp nella dichiarazione delle dipendenze, poiché il loro elaboratore di annotazioni e l'elaboratore KSP vengono forniti 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 il passaggio a KSP, sincronizza e compila il progetto per verificare se funziona ancora correttamente.
Alcuni problemi comuni da tenere in considerazione:
- Alcune librerie non supportano esattamente lo stesso insieme di funzionalità con kapt e KSP. Se il codice si interrompe dopo la migrazione, controlla la documentazione della libreria.
- KSP dispone di informazioni sui tipi Kotlin più precise di kapt (ad esempio sulla nullabilità), il che significa che i processori KSP possono essere più precisi sui requisiti di tipo. Potrebbero essere necessarie anche alcune correzioni nel codice sorgente, oltre all'aggiornamento dei file di compilazione.
- Se in precedenza passavi gli argomenti all'elaboratore di annotazioni, probabilmente ora 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.
Rimuovi il plug-in kapt
Quando non ci sono più dipendenze incluse con 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 con Groovy:
apply plugin: 'kotlin-kapt'
Devi anche rimuovere eventuali configurazioni rimanenti relative a kapt, ad esempio:
Kotlin
kapt { correctErrorTypes = true useBuildCache = true }
Groovy
kapt { correctErrorTypes true useBuildCache true }