从 Kotlin 升级 1.3.31 -> 1.3.40 中断了安卓构建



如果我尝试在 Gradle 项目中升级到最新的 Kotlin 版本,则在构建 Android 子项目时遇到以下错误:

e: /(redacted)/AndroidLauncher.kt: (8, 15): Cannot access built-in declaration 'kotlin.Unit'. Ensure that you have a dependency on the Kotlin standard library

降级回 1.3.31 构建良好。我还尝试将我的com.android.tools.build版本从3.4.0 ->3.4.1升级,但没有区别。

该错误非常清楚地表明,查找 Kotlin STL 时存在麻烦。是否需要添加一些新的依赖项或需要应用的插件?

此行为是最近修复的问题 https://youtrack.jetbrains.com/issue/KT-19227 的结果。以前,当编译的模块不依赖于 Kotlin stdlib 时,一些内置声明(如 kotlin.Unit(是从编译器内部加载的。目前,这种情况会导致构建失败,这是一种不太令人惊讶的行为。

若要使项目再次编译,请在android子项目中添加implementation(kotlin("stdlib"))依赖项。

我不知道它是否对某人有帮助,我有一个类似的问题,但从 1.3.40 到 1.3.61(不是从 1.3.31 到 1.3.40(; 在我的情况下,使用 Android Studio 它解决了以下解决方法:

  • 在 Project build.gradle 中,我离开了 kotlin 版本 1.3.61 并放置了 gradle:3.5.0而不是不起作用的 3.6.1。标题中有错误:

    
    buildscript {
        ext.kotlin_version = '1.3.61'
        ...
        dependencies {
             classpath 'com.android.tools.build:gradle:3.5.0'
             ...
        }
    
  • 在模块构建.gradle中,我已经放置了应用插件:"kotlin-android"在应用插件之前:"Kotlin-android-extensions">

希望它也适用于其他人。

最新更新