Kotlin文件更改导致重新声明错误

gan*_*law 13 android kotlin

对kotlin文件的每次更改都会在构建时导致重新声明错误。解决它的唯一方法是清理项目,然后重新构建。项目中没有其他文件与我正在编辑的文件同名。

我试过了:

  • 重命名我一直在研究的课程
  • 在Android Studio中升级和降级Kotlin,Gradle和Kotlin插件的版本
  • 使用Beta Android Studio
  • 重新排序我的gradle文件中的插件

当前版本正在使用:

org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.21
com.android.tools.build:gradle:3.2.0
Run Code Online (Sandbox Code Playgroud)

导致错误的示例代码。如果我没有构建addedThisLine它,它将作为它的第一个构建。然后,无论如何我编辑文件都会导致以下错误。

package beagle.com

class ErrorFragment {

    val hello = "Hello"

    init {
        var goodbye = "goodbye"
        var addedThisLine = "When this line is added I get error"
    }
}
Run Code Online (Sandbox Code Playgroud)

错误我得到

重新声明错误

这发生在我项目中的每个kotlin文件中,我上面发布的代码是最基本的文件。如您所见,它指向错误的类的名称。

doe*_*ema 19

只需清理项目并再次重建您的项目


Sie*_*imo 8

TL;DR:检查您的目录是否与它们在settings.gradle.

值得一提的是:MacOS 并不总是区分大小写,这可能会导致奇怪的问题。


我想我找到了一个解决方案:区分大小写的东西

就我而言,我使用的模块,我们只需要调用模块:moduleAmoduleB

settings.gradle我有:include ':ModuleA', 'moduleB'但文件系统级别的目录是:moduleA/moduleB/

这看起来很奇怪,不应该工作,但第一次运行总是有效,然后下一次运行将失败,直到项目被清理。

我决定保持一致并将目录重命名为settings.gradle列表,即使在 AndroidStudio 中它们以settings.gradle. 这也有助于清理事情,因为 git 有一个配置,在.git/config该配置下可以忽略区分大小写的内容。

因此,请检查您的目录的大小写与它们在settings.gradle.

在重命名东西并用 gradle 清理之后,一切都像以前一样。

  • 天哪,我有这个问题好几个月了,但无法解决。这解决了它。先生您是一位真正的英雄!干杯! (2认同)

Kri*_*ony 6

然后升级kotlingradle版本

尝试Run这样做可能会有所帮助

./gradlew clean
rm -rf ~/.gradle/caches/*
Run Code Online (Sandbox Code Playgroud)

或者

如果未添加,请尝试将以下内容添加到 gradle.build 文件中

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
Run Code Online (Sandbox Code Playgroud)