尝试更新到 Kotlin 1.4.0 时遇到奇怪的错误。如何使其与 Gradle 和 IntelliJ IDEA 2020.2.1 一起使用?

svo*_*oid 5 android intellij-idea gradle kotlin

Kotlin 1.4.0 现已稳定。因此,我想更新我的多模块 Android 项目来使用它。我将 IDEA 设置为使用 Kotlin 插件 1.4.0-release-IJ2020.2-1 并在使用 Kotlin DSL 的 buildSrc build.gradle.kts 中,我为 jvm 加载 Kotlin,如下所示:

plugins {
    kotlin("jvm") version "1.4.0"
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序级插件块看起来像这样

plugins {
    id("com.android.application")
    id("com.google.gms.google-services")
    kotlin("android")
    kotlin("kapt")
    id("kotlin-android-extensions")
    id("androidx.navigation.safeargs.kotlin")
}
Run Code Online (Sandbox Code Playgroud)

我还将 Kotlin stdlib 添加到我的应用程序级别 build.gradle.kts 依赖项中

implementation("org.jetbrains.kotlin:kotlin-stdlib:1.4.0")
Run Code Online (Sandbox Code Playgroud)

现在尝试构建我的项目时,我收到多个错误,如下所示:

'let((T) -> R): R' is only available since Kotlin 1.3.50 and cannot be used in Kotlin 1.3
Run Code Online (Sandbox Code Playgroud)

我不明白。gradle 是如何尝试在这里使用 Kotlin 1.3 的?知道如何解决这个问题吗?当使用 Kotlin v1.3.72 时它工作正常。

到目前为止我尝试过的:

  • 清洁工程
  • 使缓存无效并重新启动
  • 删除.gradle文件夹并重新启动
  • 修复损坏的类路径

更新 忘记提及我还收到以下警告。稳定的时候怎么会没有支撑呢?

> Configure project :buildSrc
WARNING: Unsupported Kotlin plugin version.
The `embedded-kotlin` and `kotlin-dsl` plugins rely on features of Kotlin `1.3.72` that might work differently than in the requested version `1.4.0`.
Run Code Online (Sandbox Code Playgroud)

J. *_*ler 2

也许您应该明确地将 Kotlin 标准库添加到您的依赖项中?

dependencies {
    implementation(kotlin("stdlib"))
}
Run Code Online (Sandbox Code Playgroud)

在 Kotlin 1.4 中,不再需要添加此依赖项。该插件默认将 Stdlib 应用于它所应用的项目。

来自Kotlin 1.4 发行说明

您不再需要在任何 Kotlin Gradle 项目(包括多平台项目)中声明对 stdlib 库的依赖项。默认添加依赖项。

自动添加的标准库将是相同版本的 Kotlin Gradle 插件,因为它们具有相同的版本控制。