Изменения в файле Kotlin приводят к ошибке объявления - программирование
Подтвердить что ты не робот

Изменения в файле Kotlin приводят к ошибке объявления

Каждое изменение в файле kotlin приводит к ошибке объявления при сборке. Единственный способ обойти это - очистить проект, а затем восстановить. В проекте нет других файлов с тем же именем, что и файлы, которые я редактирую.

Я пытался:

  • Переименование класса, над которым я работал,
  • Обновление и понижение версии плагинов kotlin, gradle и kotlin в Android Studio
  • Использование бета-версии Android Studio
  • Изменение порядка плагинов в моем файле Gradle

Текущая сборка использует:

org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.21
com.android.tools.build:gradle:3.2.0

Пример кода, который вызовет ошибку. Если я собираю без addedThisLine, он работает как первая сборка. Тогда, когда я в любом случае отредактирую файл, это приведет к ошибке ниже.

package beagle.com

class ErrorFragment {

    val hello = "Hello"

    init {
        var goodbye = "goodbye"
        var addedThisLine = "When this line is added I get error"
    }
}

Ошибка, которую я получаю

Redeclaration Error

Это происходит в каждом файле kotlin в моем проекте, код, который я разместил выше, является самым основным файлом. Как вы можете видеть, это указывает на имя класса для ошибки.

4b9b3361

Ответ 1

Вы можете попробовать обновить зависимости в последней версии, это может помочь вам с этой проблемой:

org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.41
com.android.tools.build:gradle:3.4.1

Также убедитесь, что в вашем модуле: приложение, которое вы реализуете в верхней части файла, это:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

Ответ 2

TL; DR: проверьте, что ваши каталоги имеют то же имя, что и в settings.gradle


Я думаю, что нашел решение: Чувствительный к регистру материал.

В моем случае я использую модули, позвольте просто вызвать модули: moduleA, moduleB

В settings.gradle у меня есть: include ':ModuleA', 'moduleB', но каталоги на уровне файловой системы: moduleA/ и moduleB/

Это кажется странным и не должно работать, но первый запуск всегда работает, затем последующие будут терпеть неудачу, пока проект не будет очищен.

Я решил сохранить согласованность и переименовать каталоги, как указано в settings.gradle, даже когда в AndroidStudio они появляются с именем, указанным в settings.gradle. Это также помогло очистить вещи, потому что git имеет конфигурацию в .git/config, в которой говорится, что нужно игнорировать чувствительные к регистру вещи.

Итак, проверьте регистр ваших каталогов и их список в settings.gradle.

После переименования вещей и очистки с помощью gradle все работало как раньше.