从 Kotlin 1.3.31 升级到 1.3.40 会导致 Android 构建失败。

7
如果我尝试在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。是否需要添加新依赖项或应用插件?


1
确保您在所有地方都使用相同的 Kotlin 版本,包括顶级 build.gradle 文件中的 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 条目和应用程序模块的 dependencies 闭包中的 implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 条目。org.jetbrains.kotlin 组件组中的其他内容也应该使用相同的版本。 - CommonsWare
我在gradle.properties中定义了kotlinVersion,然后在其他地方重复使用它。 - EntangledLoops
嗯... 我唯一的建议是尝试标准的“紧急情况下,打破玻璃”的 Android Studio 修复方法:清理项目(Build > Clean Project)和无效缓存(File > Invalidate Caches and Restart)。 - CommonsWare
@AlexeyBelkov 我的“:core”项目依赖于stdlib,每个其他子项目都依赖于它。我需要做更多吗?这是项目链接: https://github.com/entangledloops/kotlin-gdx - EntangledLoops
谢谢,已复制。这种行为是最近修复的问题 https://youtrack.jetbrains.com/issue/KT-19227 的结果。为了让您的项目再次编译,请在您的“android”子项目中添加implementation(kotlin("stdlib"))依赖项。 - Alexey Belkov
显示剩余2条评论
2个回答

7
这种行为是最近修复的问题https://youtrack.jetbrains.com/issue/KT-19227的结果。以前,当编译的模块没有依赖Kotlin stdlib时,一些内置声明(如kotlin.Unit)会从编译器内部加载。目前,这种情况会导致构建失败,这是一种不那么令人惊讶的行为。
为了使您的项目再次编译,请在您的android子项目中添加implementation(kotlin("stdlib"))依赖项。

我们如何在Flutter中添加依赖? - MUCHIRA JUNIOR

0

我不知道这是否能帮助到某些人,我遇到了类似的问题,但是是从1.3.40升级到1.3.61(而不是从1.3.31升级到1.3.40);在我的情况下,使用Android Studio,以下解决方法有效:

  • 在项目的 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'
             ...
        }
    
  • 在模块的 build.gradle 文件中,我将 apply plugin: 'kotlin-android' 放在 apply plugin: 'kotlin-android-extensions' 之前。

希望这对其他人也有用。

1
这不是我问题中使用的那个Kotlin版本。(此外,我不想降级其他组件来修复这个问题,但还是谢谢你的建议。) - EntangledLoops
你说得对,现在我会用更详细的细节来编辑我的答案。我只是为了报告我的经验,以防它能帮助到别人(...并且作为一个备忘录,当这种情况再次发生时,我会忘记这个自己的解决方法!:D) - android_dev71

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接