Изменения в файле 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"
}
}
Ошибка, которую я получаю
Это происходит в каждом файле kotlin в моем проекте, код, который я разместил выше, является самым основным файлом. Как вы можете видеть, это указывает на имя класса для ошибки.
Ответы
Ответ 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 все работало как раньше.