如果我尝试在 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">
希望它也适用于其他人。