我刚刚更新到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 的 AS1.8.0
但是这个工作正常与AGP7.4.2
和摇篮7.5
- 它只是随着来自 AS Flamingo 的 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'
}
我也尝试了示例 AS 应用程序,但它们有 Kotlin1.7.20
。他们将与 Kotlin 合作1.8.0
too - unless你介绍kapt
在依赖中! (例如匕首)
那么什么组合应该有效(包括 kapt)并且具有 Android Studio 的最新稳定推荐版本?
- Android Studio 版本?
- AGP版本?
- 摇篮版本?
- 科特林版本?
请不要未经测试的答案。我知道它“应该”有效,但事实并非如此。
最新的 Android Gradle 插件与 Kotlin kapt 之间存在兼容性问题。结果,jvmTarget
您在 Android 配置中指定的内容将在 Kotlin 编译任务上设置,但不会在 kapt 任务上设置,默认情况下,kapt 任务使用工具链版本(当前为 JDK 17)。
作为解决方法,设置jvmTarget
手动执行 kapt 任务(在您的情况下,目标是 Java 1.8):
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KaptGenerateStubs).configureEach {
kotlinOptions {
jvmTarget = "1.8"
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)