我刚刚更新到了Android Studio Flamingo | 2022.2.1.现在我得到了这个错误:

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: https://kotl.in/gradle/jvm/toolchain

我使用的是包括Kotlin在内的1.8.0,但这个was working fine与AGP 7.4.2和Gradle 7.5-它只与来自火烈鸟的Gradle和AGP更新中断.另外:

  • 如果我把Kotlin降级到1.7.20,它又能用了
  • 如果我将Kotlin更新为1.8.20,则会出现上面的错误

我确实有编译选项:

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }

我也try 了样机的应用程序,但他们有Kotlin 1.7.20.它们也将与Kotlin 1.8.0一起工作--unless您在依赖项中引入了kapt!(例如,dagger )

那么,包括Kapt在内的哪种组合应该奏效,并且拥有Android Studio最新稳定的推荐版本?

  • Android Studio版本?
  • AGP版本?
  • Gradle版?
  • Kotlin 版?

请不要有未经测试的答案.我知道它"应该"奏效,但它没有.

推荐答案

最新的Android Gradle插件和Kotlin Kapt之间存在兼容性问题.因此,您在Android配置中指定的jvmTarget将设置在Kotlin编译任务上,而不是设置在Kapt任务上,后者默认使用工具链版本(当前为JDK17).

作为一种解决办法,在Kapt任务上手动设置jvmTarget(在您的例子中,目标是Java 1.8):

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KaptGenerateStubs).configureEach {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Android相关问答推荐

在Android Studio中陷入了不兼容的Gradle版本的循环

组成底部导航栏,自定义形状,周围透明

如何在Jetpack Compose中使用Box Composable来实现这种布局?

为什么Ionic-checkbox不总是刷新Android上的视图?

StateFlow集合AsState没有更新他的值Jetpack Compose导航

保护所有程序包文件和类

我无法在底部导航栏中正确导航-Android底部导航视图

Android-交叉引用表中的ForeignKey用于什么?

尽管我在onCreate()期间已经初始化,但仍出现未初始化的late init变量错误

Android AGP 8 + Gradle 8 + Kotlin 1.8 导致 Kapt 出错

[Android][Room] 将密封类存储到 Room 数据库中

如何正确地将图像上传到 Jetpack Compose 中的 LazyList 中的项目?

在移动设备上看到时如何增加 PasswordField 文本?

react 从输入中找到路径'lib/arm64-v8a/libfbjni.so'的本机2个文件

Jetpack Compose:mutableStateOf 不随流量更新

如何在包含 Jetpack Compose 内容的布局中使用权重

在 Room 中创建一对多关系时,@Relation 类是什么意思?

如何在 Android Studio 中使用 Github Copilot?

更新应用程序是否会取消对应用程序特定文件的权限?

compose :为什么以记住启动的列表触发方式与快照不同