🔨
【Android】kapt から KSP に切り替えてビルド速度を改善する
kapt
-
Kotlin Annotation Processing Toolの略 - アノテーションに基づいてコードを自動生成する
Java annotation processorsをKotlinでも使えるようにするためのもの -
DataBinding、Moshi、Roomなどで使う - 現在はメンテナンスモードとなっている(kapt compiler plugin)
問題点
-
kaptはJavaのスタブを生成するが、スタブ生成には高い負荷がかかるので、ビルド時間にも影響してしまう - 上記の理由で、次に登場する
KSPを使用することが推奨されている
KSP
-
Kotlin Symbol Processingの略 -
KSPではKotlinのコードを直接分析することでJavaのスタブ生成が必要なくなり、ビルド速度が改善する -
kaptよりも2倍高速(らしい)!! - よって
KSPを導入することで、ビルド時間の改善が期待できる
開発環境
Android Studio Flamingo | 2022.2.1 Beta 5
Kotlin: 1.7.20
Gradle: 7.4.0-rc03
KSP の初期設定
build.gradle(Project)
plugins {
id 'com.google.devtools.ksp' version '1.7.20-1.0.6' apply false
}
build.gradle(Module)
plugins {
id 'com.google.devtools.ksp'
}
KSP 導入
今回はRoomでKSPを使ったときのビルド速度の変化を見てみたいと思います。
build.gradle(Module)
plugins {
id 'com.google.devtools.ksp'
}
dependencies {
def roomVersion = "2.5.0"
implementation "androidx.room:room-ktx:$roomVersion"
annotationProcessor "androidx.room:room-compiler:$roomVersion"
ksp "androidx.room:room-compiler:$roomVersion"
}
KSPをサポートしているライブラリは Supported libraries から確認することができます。
以下のビルド時間を確認する方法は 【Android】タスクごとのビルド時間を確認する を参照してください!
| kapt(24.3s) | KSP(19.9s) |
|---|---|
![]() |
![]() |
24.3sから19.9sに改善されました!
kaptGenerateStubsDebugKotlinってタスクが減ってるので、これがスタブ生成かな?
(HiltはKSPの対応がまだなのでそのままにしています。)


Discussion