You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Android项目至Gradle8.0构建触发Kapt错误求助

解决Gradle 8.0 + JDK 17升级中的kapt构建错误

核心问题分析

你遇到的kaptDebugKotlin任务报错,本质是kapt生成Java stubs时的JVM目标版本与项目全局配置不一致,属于Gradle 8.0和Kotlin插件之间的兼容性Bug——全局的jvmToolchain配置没有自动同步到kapt的stubs生成任务中,导致反射调用时出现版本不匹配的异常。

分步解决思路

1. 精简冗余配置,保留核心JVM工具链设置

Stack Overflow提到的仅配置jvmToolchain(17)是合理的,因为Android Gradle Plugin(AGP)8.0会自动将sourceCompatibility和targetCompatibility同步到jvmToolchain指定的版本,无需重复配置compileOptions和kotlinOptions。保留以下配置即可:

kotlin {
    jvmToolchain(17)
}

2. 强制为kapt生成stubs任务指定JVM目标

针对kapt的兼容性Bug,必须显式给stubs生成任务设置JVM目标,临时解决方案可以直接写死版本号(避免依赖版本变量可能的配置问题):

tasks.withType<KaptGenerateStubsTask>().configureEach {
    kotlinOptions.jvmTarget = "17"
}

这段代码会遍历所有kapt生成stubs的任务,强制将其JVM目标版本设为17,解决反射调用异常的根源。

3. 验证插件版本兼容性

确保Kotlin插件版本与AGP 8.0匹配,AGP 8.0要求Kotlin插件版本至少为1.8.0,顶层build.gradle需补充或更新Kotlin插件配置:

plugins {
    id 'com.android.application' version '8.0.0' apply false
    id 'com.android.library' version '8.0.0' apply false
    id 'org.jetbrains.kotlin.android' version '1.8.20' apply false
}

4. 清理缓存后重新构建

旧的构建缓存可能残留不兼容的配置,执行以下命令彻底清理并重新构建:

./gradlew clean build --refresh-dependencies

额外注意事项

  • 本地开发环境需确保安装JDK 17,可通过java -version验证版本;
  • 若项目使用第三方注解处理器(如Room、Dagger),需升级到支持JDK 17的版本:Room 2.5.0+、Dagger 2.45+等。

内容的提问来源于stack exchange,提问作者lostintranslation

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 21:42:11