Gradle 8兼容的Hilt版本及JVM目标版本冲突解决咨询
解决Android Compose+Hilt编译时JVM版本不兼容问题
问题现象
添加Hilt依赖后编译失败,错误信息如下:
> Task :app:kaptGenerateStubsDebugKotlin FAILED Execution failed for task ':app:kaptGenerateStubsDebugKotlin'. > 'compileDebugJavaWithJavac' task (current target is 1.8) and 'kaptGenerateStubsDebugKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version. Consider using JVM toolchain * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights.
项目与环境配置
- Android Gradle Plugin: 8.1.1
- Gradle版本: 8.0
- Kotlin版本: 1.8.0
- Android Studio版本: Android Studio Giraffe | 2022.3.1 Patch 1
- Gradle JDK: Android Studio默认的Jetbrains Runtime 17.0.6
解决方案
方案1:统一JVM目标版本(推荐)
直接在模块的build.gradle.kts中统一配置Java和Kotlin的JVM目标版本,避免任务间版本冲突:
android { compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } }
也可以使用Gradle工具链统一管理,这是官方推荐的标准化方式:
android { compileOptions { toolchain { languageVersion.set(JavaLanguageVersion.of(17)) } } kotlinOptions { jvmTarget = "17" } }
方案2:修改Kapt任务的JVM目标(临时方案)
你找到的临时方案是可行的,但仅针对Kapt任务单独修改,不如统一配置彻底:
tasks { withType(org.jetbrains.kotlin.gradle.tasks.KaptGenerateStubs::class.java).configureEach { kotlinOptions { jvmTarget = "1.8" } } }
Gradle 8兼容的Hilt版本
从Hilt 2.44版本开始已全面支持Gradle 8.x,后续的稳定版本如2.47、2.48等也都兼容Gradle 8,建议使用最新稳定版以获得更完善的兼容性和问题修复。
内容的提问来源于stack exchange,提问作者Carlos Leonardo Camilo Vargas
相关产品推荐
相关产品推荐

