Изменения в файле Kotlin приводят к ошибке объявления - PullRequest
11 голосов
/ 27 июня 2019

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

Я пробовал:

  • Переименование класса, над которым я работаю
  • Обновление и понижение версии плагинов 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 в моем проекте приведенный выше код является самым основным файлом.Как вы можете видеть, это указывает на имя класса для ошибки.

1 Ответ

0 голосов
/ 29 июля 2019

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


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

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...