Von Kapt zu KSP migrieren

Mit Kapt (das Kotlin Annotation Processing Tool) können Sie Java-Anmerkungsprozessoren mit Kotlin-Code selbst dann, wenn diese Prozessoren keine spezieller Support für Kotlin. Dies erfolgt durch Generieren von Java-Stubs aus Ihrem Kotlin-Dateien, die die Prozessoren dann lesen können. Diese Stub-Generierung ist ein und hat großen Einfluss auf die Build-Geschwindigkeit.

KSP (Kotlin Symbol Processing) ist eine Kotlin-First-Alternative zu kapt. Der KSP analysiert den Kotlin-Code direkt, was bis zu 2-mal Außerdem sind die Kotlin-Standards Sprachkonstrukte ein.

Kapt befindet sich jetzt im Wartungsmodus und wir empfehlen die Migration von kapt zu KSP wenn möglich. In den meisten Fällen sind für diese Migration nur Änderungen an der der Build-Konfiguration des Projekts.

Sie können kapt und KSP in Ihrem Projekt parallel ausführen, Die Migration kann Modul für Modul und Bibliothek für Bibliothek durchgeführt werden.

Hier ein Überblick über die Migrationsschritte:

  1. Prüfen Sie die Bibliotheken, die Sie für den KSP-Support verwenden
  2. Ihrem Projekt das KSP-Plug-in hinzufügen
  3. Annotationsprozessoren durch KSP ersetzen
  4. kapt-Plug-in entfernen

Prüfen Sie die Bibliotheken, die Sie für den KSP-Support verwenden

Prüfen Sie zuerst, ob die Bibliotheken, die Sie mit kapt verwenden, bereits einen KSP haben Support. Dies ist bei vielen gängigen Bibliotheken der Fall, Doktor, Glide, Raum, und Moshi) und andere fügen Support hinzu.

Eine Liste der unterstützten Bibliotheken finden Sie in der oder in der Dokumentation und im Issue Tracker der Bibliotheken nachlesen. die Sie verwenden.

Ihrem Projekt das KSP-Plug-in hinzufügen

Deklarieren Sie zuerst das KSP-Plug-in in der Datei build.gradle.kts auf oberster Ebene. Achten Sie darauf, eine KSP-Version auszuwählen, die zum Kotlin-Code Ihres Projekts passt Version. Eine Liste der Releases finden Sie auf dem KSP GitHub .

Kotlin

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

Cool

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

Aktivieren Sie dann in der Datei build.gradle.kts auf Modulebene den KSP:

Kotlin

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

Cool

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

Annotationsprozessoren durch KSP ersetzen

Wenn KSP aktiviert ist, können Sie die Verwendung von kapt durch KSP ersetzen. Für eine umfangreiche der meisten Bibliotheken müssen Sie kapt lediglich bei der Abhängigkeit da sie ihren Annotations- und KSP-Auftragsverarbeiter an die von demselben Artefakt.

Kotlin

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

Cool

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

Nach dem Wechsel zum KSP synchronisieren und erstellen, um zu sehen, ob es noch funktioniert korrekt sind.

Einige häufige Probleme, auf die Sie achten sollten:

  • Einige Bibliotheken unterstützen nicht genau die gleichen Funktionen mit kapt und KSP. Wenn Ihr Code nach der Migration fehlerhaft ist, lesen Sie die Dokumentation der Bibliothek.
  • Der KSP bietet genauere Kotlin-Typ-Informationen als kapt, z. B. Null-Zulässigkeit), was bedeutet, dass KSP-Prozessoren genauer Anforderungen. Möglicherweise müssen auch einige Korrekturen in Ihrem Quellcode vorgenommen werden. und Build-Dateien aktualisieren.
  • Wenn Sie zuvor Argumente an den Annotationsprozessor übergeben haben, müssen Sie diese Argumente wahrscheinlich jetzt an den KSP weiterleiten. Das Format der Argumente können sich zwischen kapt und KSP unterscheiden. Wichtige Verkaufsargumente Dokumentation lesen und die Dokumentation der Bibliothek lesen die Sie verwenden, um mehr zu erfahren.

kapt-Plug-in entfernen

Wenn in Ihrem Modul keine Abhängigkeiten mehr mit kapt enthalten sind, entfernen Sie das kapt-Plug-in.

Wenn es in einem Plug-in-Block deklariert wurde:

Kotlin

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

Cool

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

Wenn die Anwendung des Plug-ins mit Groovy verwendet wurde:

apply plugin: 'kotlin-kapt'

Sie sollten auch alle verbleibenden Konfigurationen im Zusammenhang mit kapt entfernen, z. B.:

Kotlin


kapt {
    correctErrorTypes = true
    useBuildCache = true
}

Cool


kapt {
    correctErrorTypes true
    useBuildCache true
}

Weitere Informationen