Check for Libraries for Migration

Wherever you are using Kapt , you need to check if KSP support for that library is available.

Many libraries have added support for KSP likeRoom, Moshi etc and others are adding e.g Hilt.

If you are using Hilt, Hilt support for KSP is still in alpha. You are required to use at least Kotlin 1.9.0 , Dagger 2.48 and KSP version 1.9.0–1.0.12 or above. You can see KSP releases here.

In my project I was using Kotlin 1.8.10 so I had to upgrade to at least Kotlin 1.9.0 , making sure the correct KotlinCompilerExtensionVersion is used against Kotlin 1.9.0 which I set to be 1.5.2 . You can see the mapping between Compose Compiler Version and Compatible Kotlin Version from the link.

Add KSP Plugin

In your project level build.gradle file add KSP plugin.

I am using Version Catalog to manage plugins and dependencies, If you want to migrate to Version Catalog, you can read my other story from the link below.

KSP plugin in Version Catalog.

kspPlugin = "1.9.0-1.0.12"

ksp = { id = "", version.ref="kspPlugin" }

Adding plugin to the build.gradle .

// root project level build.gradle
plugins {
alias(libs.plugins.ksp) apply false

// module level build.gradle
plugins {

Replace Kapt with KSP

Migrate modules one by one. In each module’s build.gradle add plugin for KSP

// module level build.gradle
plugins {

Then replace kapt with KSP as below.

// dagger hilt

Sync and build your project, if you have errors, do visit the corresponding library documentations.

Remove Kapt Configurations

In the end you would like to remove kapt plugin and related configurations.

E.g the following commented lines will no longer be required.

plugins {
// kotlin("kapt")

//// Allow references to generated code
//kapt {
// correctErrorTypes = true

There might be cases where some of the libraries have not supported KSP as yet, but you can keep Kapt and KSP running together until you completely migrate to KSP.

That’s it for now, I hope it was helpful.

Remember to follow and 👏 if you liked it 🙂

GitHub | LinkedIn | Twitter

Source link