升级AGP至8.1.0-beta05后kaptGenerateStubs任务JVM版本兼容报错
解决AGP 8.1.0-beta05中kapt与Java编译JVM版本不兼容问题
AGP 8.x 对Kotlin和Java编译的JVM版本一致性要求比旧版本更严格,你之前的配置没生效,是因为只单独设置了Java的兼容版本,没同步Kotlin(包括kapt)的JVM目标,或者工具链配置不完整。以下是完整的解决方法:
完整配置步骤
1. 全局配置(根目录build.gradle.kts/.gradle)
确保所有模块的编译任务统一使用同一个JVM版本(推荐Java 17,AGP 8.x官方适配版本):
// 根build.gradle.kts示例 plugins { id("com.android.application") version "8.1.0-beta05" apply false id("org.jetbrains.kotlin.android") version "1.9.0" apply false } allprojects { // 统一Java编译版本 tasks.withType<JavaCompile> { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } // 统一Kotlin编译的JVM目标 tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { kotlinOptions.jvmTarget = "17" } } // 配置Gradle JVM工具链 java { toolchain { languageVersion.set(JavaLanguageVersion.of(17)) } }
2. 模块级配置(app模块build.gradle.kts/.gradle)
在app模块中补充适配,确保Android编译选项和Kotlin配置对齐:
// app/build.gradle.kts示例 android { compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 // 如需兼容低版本Android,开启Desugar coreLibraryDesugaringEnabled = true } kotlinOptions { jvmTarget = "17" // 保留你的Compose编译参数(如果有) freeCompilerArgs += listOf( "-opt-in=kotlin.RequiresOptIn", "-opt-in=androidx.compose.material3.ExperimentalMaterial3Api" ) } } dependencies { // 开启Desugar时需要添加该依赖 coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4") } // 模块级工具链配置 java { toolchain { languageVersion.set(JavaLanguageVersion.of(17)) } }
后续操作
- 检查Android Studio的JDK配置:
File > Project Structure > SDK Location,确认JDK路径指向Java 17 - 清理并重建项目:执行
./gradlew clean build,或者在AS中点击Build > Clean Project后再Rebuild Project - 若仍有问题,排查第三方插件或子模块是否单独设置了JVM版本,需统一所有模块的配置
内容的提问来源于stack exchange,提问作者Mehdi Haghgoo
相关产品推荐
相关产品推荐

