Несоответствие типов при создании новой ViewModel для реализации Room - kotlinx.coroutines устарела с версии 1.3 - PullRequest
0 голосов
/ 21 апреля 2019

Я создаю приложение, которое будет в значительной степени зависеть от пользовательских данных и планирую использовать Room для управления и хранения их информации. Однако, следуя руководству, я столкнулся с несколькими проблемами с версиями, которые у меня были проблемы, решаемые самостоятельно.

Поскольку я довольно новичок как в разработке Android, так и в использовании Room, я следую этому руководству: Android Room с видом - Kotlin

Я впервые заметил, что могут быть некоторые проблемы на шаге 3, когда я обновляю свои файлы Gradle. В двух последних строках блока dependencies меня встретила следующая ошибка:

Library should be updated to be compatible with Kotlin 1.3

Library errors from Android Studio Я был смущен этим, так как учебник использует какую-то переменную для определения версий библиотеки. В этот момент я запустил приложение, и оно, похоже, работало нормально, поэтому я продолжил.

Когда я добрался до шага 9, я также столкнулся с дополнительными ошибками, которые теперь мешают выполнению сборок:

Type mismatch: inferred type is kotlin.coroutines.experimental.CoroutineContext but kotlin.coroutines.CoroutineContext was expected 
Type mismatch: inferred type is kotlin.coroutines.CoroutineContext but kotlin.coroutines.experimental.CoroutineContext was expected

Это из-за ошибок, из-за которых реализации kotlinx.coroutines.experimental устарели, однако я не смог найти ссылки на библиотеки без experimental, используя intellisense Android Studio. Type mismatch errors form Android Studio

Что мне нужно сделать, чтобы решить эти проблемы с библиотекой и продолжить обучение?

1 Ответ

0 голосов
/ 21 апреля 2019

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

Чтобы попытаться решить эти проблемы, я начал с ошибок в моих скриптах Gradle, чтобы посмотреть, может ли это разрешить зависимостив коде.Я нашел этот пост , который я до сих пор не до конца убежден, что это лучшее решение, но только следуя первой паре предложений в верхнем ответе, я решил большинство моих проблем.

Для ясности, я изменил следующее:

  1. Изменил переменную в последней строке блока dependencies Gradle, чтобы иметь жестко закодированный номер версии (я сделалпоследний найден в репозитории kotlinx.coroutines ).Если возможно, я бы хотел, чтобы это снова было сгенерировано автоматически, поскольку учебник подразумевает
  2. Удален блок kotlin из нижней части того же файла Gradle
  3. Синхронизирован мой проект Gradle
  4. Обновление Kotlin и Gradle (меня спросили в Android Studio, возможно, вы не зависите от своих версий)
  5. Вручную удалили проблемные библиотеки из кода и Alt+Enter вернули все недостающие библиотеки обратно в существование

Если вы обновляете Gradle, вы также можете счесть необходимым включить в файл Module: app Gradle внутри блока android следующее:

packagingOptions {
    exclude 'META-INF/*'
}

(*для некоторых это может быть излишним, но предложение этого поста не полностью устранило все мои ошибки.)

После всего этого я смог восстановить SDK, загруженный вмой телефон с нулевыми ошибками.

...