はじめに
kapt 、ksp って何? みたいな話は他者様の記事に任せるとして、本記事には Hilt + kapt の環境を Hilt + ksp に移行した作業のみを簡潔に記載する。
移行の方針
Hilt + ksp にする方針は kapt から KSP に移行する と Dagger KSP の Requirements に基づく。
Dagger 2.48 (or above)
Kotlin 1.9.0 (or above)
KSP 1.9.0-1.0.12 (or above)
環境
AGP(Android Gradle plugin) は 8.4.1
。
gradle/wrapper/gradle-wrapper.properties
plugins {
id 'com.android.application' version '8.4.1' apply false
id 'com.android.library' version '8.4.1' apply false
(省略)
app/build.gradle
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
build.gradle
plugins {
id 'com.android.application' version '8.4.1' apply false
id 'com.android.library' version '8.4.1' apply false
- id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
- id 'com.google.dagger.hilt.android' version '2.44' apply false
+ id 'org.jetbrains.kotlin.android' version '1.9.0' apply false
+ id 'com.google.dagger.hilt.android' version '2.48.1' apply false
+ id 'com.google.devtools.ksp' version '1.9.0-1.0.12' apply false
}
(省略)
app/build.gradle
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'androidx.navigation.safeargs'
- id 'kotlin-kapt'
id 'com.google.dagger.hilt.android'
+ id 'com.google.devtools.ksp'
}
(省略)
compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
- jvmTarget = '1.8'
+ jvmTarget = "17"
}
viewBinding {
enabled = true
}
- kapt {
- correctErrorTypes true
- }
}
(省略)
// Hilt
- def hilt_version = "2.44"
+ def hilt_version = "2.48.1"
implementation "com.google.dagger:hilt-android:$hilt_version"
- kapt "com.google.dagger:hilt-compiler:$hilt_version"
+ ksp "com.google.dagger:hilt-compiler:$hilt_version"
(省略)
sourceCompatibility
と targetCompatibility
を JavaVersion.VERSION_17
にしない場合は以下のビルドエラーが発生する。
Execution failed for task ':app:kspDebugAndroidTestKotlin'.
> 'compileDebugAndroidTestJavaWithJavac' task (current target is 1.8) and 'kspDebugAndroidTestKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version.
Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain
jvmTarget
を 17
にしない場合も以下のビルドエラーが発生する。
Execution failed for task ':app:kspDebugKotlin'.
> 'compileDebugJavaWithJavac' task (current target is 17) and 'kspDebugKotlin' task (current target is 1.8) jvm target compatibility should be set to the same Java version.
Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain
以上で移行完了。