Migrazione da kapt a KSP

Kapt (lo strumento di elaborazione delle annotazioni Kotlin) ti consente di utilizzare processori di annotazioni Java con codice Kotlin, anche se questi non dispongono di supporto specifico per Kotlin. Per farlo, dai tuoi file Kotlin genera stub Java che i processori possono leggere. Questa generazione di stub è un'operazione costosa e ha un impatto significativo sulla velocità di build.

KSP (Kotlin Symbol Processing) è un'alternativa Kotlin-first al kapt. Il KSP analizza direttamente il codice Kotlin, fino a 2 volte più veloce. Ha anche una migliore comprensione dei costrutti linguistici di Kotlin.

Ora Kapt è in modalità di manutenzione, pertanto, ove possibile, ti consigliamo di eseguire la migrazione da kapt a KSP. Nella maggior parte dei casi, questa migrazione richiede solo modifiche alla configurazione della build del progetto.

Puoi eseguire kapt e KSP insieme nel progetto durante la migrazione, e la migrazione può essere eseguita modulo per modulo, libreria per libreria.

Ecco una panoramica dei passaggi della migrazione:

  1. Controlla le librerie che utilizzi per il supporto del principale punto di forza
  2. Aggiungi il plug-in KSP al progetto
  3. Sostituisci i processori di annotazione con il principale punto di forza
  4. Rimuovi il plug-in kapt

Controlla le librerie che utilizzi per il supporto del principale punto di forza

Per iniziare, verifica se le librerie che usi con kapt dispongono già del supporto KSP. Questo è il caso di molte librerie note (tra cui Dagger, Glide, Room e Moshi) e altre ancora stanno aggiungendo il supporto.

Puoi consultare l'elenco delle librerie supportate nella documentazione o consultare la documentazione e il tracker dei problemi delle librerie che stai utilizzando.

Aggiungi 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 del principale punto di forza in linea con la versione di Kotlin del progetto. Puoi trovare un elenco delle release nella pagina GitHub di KSP.

Kotlin

plugins {
    id("com.google.devtools.ksp") version "1.8.10-1.0.9" apply false
}

Trendy

plugins {
    id 'com.google.devtools.ksp' version '1.8.10-1.0.9' apply false
}

Poi abilita il principale punto di forza nel file build.gradle.kts a livello di modulo:

Kotlin

plugins {
    id("com.google.devtools.ksp")
}

Trendy

plugins {
    id 'com.google.devtools.ksp'
}

Sostituisci i processori di annotazione con il principale punto di forza

Con il principale fornitore di servizi (KSP) abilitato, puoi iniziare a sostituire l'uso di kapt con quello di KSP. Per gran parte delle librerie, questo richiede solo di modificare kapt in ksp nella dichiarazione delle dipendenze, in quanto il processore di annotazione e quello KSP vengono forniti nello stesso artefatto.

Kotlin

dependencies {
    kapt("androidx.room:room-compiler:2.5.0")
    ksp("androidx.room:room-compiler:2.5.0")
}

Trendy

dependencies {
    kapt 'androidx.room:room-compiler:2.5.0'
    ksp 'androidx.room:room-compiler:2.5.0'
}

Dopo lo spostamento al principale fornitore di servizi, sincronizza e crea il tuo progetto per vedere se funziona ancora correttamente.

Alcuni problemi comuni da tenere in considerazione:

  • Alcune librerie non supportano lo stesso insieme di funzionalità di kapt e KSP. Se il codice si interrompe dopo la migrazione, controlla la documentazione della libreria.
  • Il KSP ha informazioni di tipo Kotlin più accurate rispetto a kapt (ad esempio sulla nullità), il che significa che i processori del KSP possono essere più precisi sui requisiti di tipo. Ciò potrebbe richiedere anche alcune correzioni nel codice sorgente, oltre all'aggiornamento dei file di build.
  • Se in precedenza passavi argomenti al processore di annotazioni, dovrai passare ora tali argomenti al principale fornitore di servizi. Tieni presente che il formato degli argomenti potrebbe variare tra kapt e KSP. Per scoprire di più, consulta la documentazione dei principali punti di forza e la documentazione della libreria che stai utilizzando.

Rimuovi il plug-in kapt

Quando nel modulo non sono più incluse dipendenze in kapt, rimuovi il plug-in kapt.

Se è stato dichiarato in un blocco dei plug-in:

Kotlin

plugins {
    id("org.jetbrains.kotlin.kapt")
}

Trendy

plugins {
    id 'org.jetbrains.kotlin.kapt'
}

Se utilizzava la sintassi del plug-in di applicazione con Groovy:

apply plugin: 'kotlin-kapt'

Devi anche rimuovere qualsiasi configurazione rimanente relativa a kapt, ad esempio:

Kotlin


kapt {
    correctErrorTypes = true
    useBuildCache = true
}

Trendy


kapt {
    correctErrorTypes true
    useBuildCache true
}

Risorse aggiuntive