Почему реализация Cloneable Interface в классе Kotlin приводит к «ошибке: здесь интерфейс не ожидается»? - PullRequest
2 голосов
/ 01 декабря 2019

Я возобновляю работу над приложением для Android, которого я не трогал уже год. Раньше строил нормально в то время. Теперь, когда я открываю его в Android Studio, он жалуется, что различные библиотеки, плагины и т. Д. Устарели. Пытаясь исправить это самостоятельно, я не смог избавиться от всех ошибок синхронизации / сборки, поэтому в итоге я обновил Android Studio (примерно с 3.3, я думаю) до 3.5.2 и позволил ей обновлять любые плагины и т. Д. to.

Затем я столкнулся с проблемами, указывающими на необходимость перехода со старых пакетов поддержки на AndroidX (подробности не помню). Чтобы выполнить миграцию, я сделал следующее:

  • Установите compileSdkVersion на 28 для всех модулей
  • Во build.gradle всех модулей обновил зависимости до 28
  • Добавлено android.useAndroidX = true и android.enableJetifier = true для gradle.properties
  • Ран Рефакторинг |Миграция на AndroidX ...

Теперь Gradle Sync работает, но сборка завершается с ошибкой:

> Task :app:kaptDebugKotlin FAILED
e: [...]\app\build\tmp\kapt3\stubs\debug\com\[...]\MyClass.java:9: error: no interface expected here
public final class MyClass extends java.lang.Cloneable {
                                           ^

FAILURE: Build failed with an exception.

Вышеуказанная ошибка в сгенерированном коде. Мой код, из которого сгенерировано выше, выглядит так:

// MyClass.kt
class MyClass : Cloneable {
...
}

Я понимаю, java.lang.Cloneable - это интерфейс, и сгенерированный код имеет extends вместо implements. Но, как уже упоминалось, это работало, так что я делаю не так?

1 Ответ

1 голос
/ 01 декабря 2019

Я еще раз взглянул на уровень проекта build.gradle и нашел его. Android Studio предлагает снова обновить версию Kotline. Я изменил его на

ext.kotlin_version = '1.3.61'

и теперь я могу скомпилировать.

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