Я возобновляю работу над приложением для 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
. Но, как уже упоминалось, это работало, так что я делаю не так?