39 lines
1.7 KiB
Markdown
39 lines
1.7 KiB
Markdown
When migrating to built-in Kotlin, it is important to consider usage of `kapt`
|
|
and the `org.jetbrains.kotlin.kapt` (also known as the `kotlin("kapt")`) plugin.
|
|
The goal is to migrate as many `kapt` usages to `ksp` as possible.
|
|
|
|
Follow these steps when migrating `kapt`:
|
|
|
|
## 1. Remove all references to the `org.jetbrains.kotlin.kapt` plugin
|
|
|
|
The `org.jetbrains.kotlin.kapt` (also known as `kotlin("kapt")`) plugin is
|
|
incompatible with built-in Kotlin. Remove it when migrating to built-in Kotlin.
|
|
|
|
## 2. Check each usage of `kapt`
|
|
|
|
Check each usage of `kapt` to see if it is compatible with `ksp`. To check if a
|
|
dependency is compatible with `ksp`, inspect the dependency's jar. For it to be
|
|
compatible with `ksp`, the jar must have a file,
|
|
`services/com.google.devtools.ksp.processing.SymbolProcessorProvider`. If it
|
|
does not, it is **incompatible** with `ksp`.
|
|
|
|
For example, the `androidx.room:room-compiler` library is compatible with KSP
|
|
since version 2.3.0-beta02. We can verify this by finding the jar file in the
|
|
Gradle caches directory, which is typically located at
|
|
`~/.gradle/caches/modules-2/files-2.1/` on Linux and Mac. In this specific case,
|
|
the `androidx.room:room-compiler` dependency is located at
|
|
`~/.gradle/caches/modules-2/files-2.1/androidx.room/room-compiler/`.
|
|
|
|
More generally, you can find a dependency by looking in
|
|
`~/.gradle/caches/modules-2/files-2.1/group-name/artifact-name/`.
|
|
|
|
## 3. Migrate to KSP where possible
|
|
|
|
For each usage of `kapt` that is compatible with `ksp`, use `ksp`. The prior
|
|
step explains how to check compatibility.
|
|
|
|
## 4. Apply legacy-kapt
|
|
|
|
If a Gradle module has `kapt` dependencies that cannot be migrated to `ksp`
|
|
because they are incompatible (see step 2), then leave that dependency alone and
|
|
apply the `com.android.legacy-kapt` plugin. |