Kapt (Kotlin Annotation Processing Tool) consente di utilizzare i processori di annotazioni Java con il codice Kotlin, anche se questi processori non dispongono di un supporto specifico per Kotlin. A questo scopo, vengono generati stub Java dai file Kotlin che i processori possono poi leggere. La generazione di stub è un'operazione dispendiosa e ha un impatto significativo sulla velocità di build.
KSP (Kotlin Symbol Processing) è un'alternativa a kapt incentrata su Kotlin. KSP analizza direttamente il codice Kotlin, il che è fino a 2 volte più veloce. Inoltre, comprende meglio i 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 della migrazione:
- Controlla le librerie che utilizzi per il supporto di KSP
- Aggiungi il plug-in KSP al tuo progetto
- Sostituisci i processori di annotazioni con KSP
- Rimuovi 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 o fare riferimento alla documentazione e all'Issue Tracker delle librerie che utilizzi.
Aggiungi il plug-in KSP al tuo 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 }
Alla moda
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") }
Alla moda
plugins { id 'com.google.devtools.ksp' }
Sostituisci 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 della dipendenza, poiché il processore di annotazioni e il processore KSP vengono forniti nello stesso artefatto.
Kotlin
dependencies {kapt("androidx.room:room-compiler:2.5.0")ksp("androidx.room:room-compiler:2.5.0") }
Alla moda
dependencies {kapt 'androidx.room:room-compiler:2.5.0'ksp 'androidx.room:room-compiler:2.5.0' }
Dopo aver eseguito il passaggio a KSP, sincronizza e crea il progetto per verificare che funzioni ancora correttamente.
Ecco alcuni problemi comuni da tenere in considerazione:
- Alcune librerie non supportano esattamente lo stesso insieme di funzionalità con kapt e KSP. Se il codice non funziona dopo la migrazione, consulta la documentazione della libreria.
- KSP dispone di informazioni sui tipi Kotlin più accurate rispetto a kapt (ad esempio, sulla nullabilità), il che significa che i processori KSP possono essere più precisi sui requisiti dei tipi. Questo potrebbe richiedere alcune correzioni anche nel codice sorgente, oltre all'aggiornamento dei file di build.
- 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 saperne di più, consulta la documentazione di KSP e la documentazione della libreria che stai utilizzando.
Rimuovi il plug-in kapt
Quando non hai più dipendenze incluse con kapt nel tuo modulo,
rimuovi il plug-in kapt.
Se è stato dichiarato in un blocco plugins:
Kotlin
plugins {id("org.jetbrains.kotlin.kapt")}
Alla moda
plugins {id 'org.jetbrains.kotlin.kapt'}
Se utilizzava la sintassi apply plugin con Groovy:
apply plugin: 'kotlin-kapt'
Devi anche rimuovere qualsiasi configurazione residua relativa a kapt, ad esempio:
Kotlin
kapt { correctErrorTypes = true useBuildCache = true }
Alla moda
kapt { correctErrorTypes true useBuildCache true }