Компоненты архитектуры Android: ошибка синхронизации Gradle для версии зависимости - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь добавить ViewModel и LiveData в приложение Kotlin.У меня есть следующие зависимости, добавленные в мой модуль build.gradle:

implementation "android.arch.lifecycle:extensions:1.1.1"
kapt "android.arch.lifecycle:compiler:1.1.1"
testImplementation "android.arch.core:core-testing:1.1.1"

Мне выдается следующая ошибка:

Зависимость Android 'android.arch.lifecycle: runtime'имеет разные версии для пути к классам compile (1.0.0) и runtime (1.1.1).Вы должны вручную установить ту же версию с помощью DependencyResolution

Удаление первой строки (extensions) устраняет проблему, указывая на то, что оттуда исходит ошибка, но я не могу понять, почему.

Ответы [ 5 ]

0 голосов
/ 27 марта 2019

Я искал все зависимости с ./gradlew :app:dependencies, как упомянул @RedBassett. Я заметил, что несовместимая версия android.arch.core:runtime, на которую жаловался Градл, произошла от моей версии com.android.support:appcompat-v7, поэтому я просто обновил эту версию до последней, и все заработало.

0 голосов
/ 13 октября 2018

@ RedBassett прав.Однако у меня все еще была проблема, исключающая android.arch.lifecycle связанные подчиненные зависимости.

В моем случае конфликт был вызван в com.android.support:appcompat-v7:27.1.1.

Вот так выглядит моя зависимость gradle после ее исключения.

implementation ('com.android.support:appcompat-v7:27.1.1') {
    exclude group: 'android.arch.lifecycle'
}


api "android.arch.lifecycle:runtime:1.1.1"
kapt "android.arch.persistence.room:compiler:1.1.1"

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

0 голосов
/ 26 апреля 2018

В вашем основном build.gradle файле

allprojects {
    ...

    configurations {
        all {
            resolutionStrategy {
                force "android.arch.lifecycle:runtime:1.1.1"
            }
        }
    }

}

Это приведет к применению версии 1.1.1

0 голосов
/ 13 июня 2018

Как упоминает @RedBassett Поддержка библиотек зависит от этого упрощенного импорта (библиотеки времени выполнения), как описано в документации для разработчиков Android .

Это android.arch.lifecycle: runtime: 1.0.0 распространяется в дереве зависимостей в результате внутреннего импорта API (транзитивного), поэтому в моем случае мне нужно было только включить библиотеку расширений как «api» вместо «реализация», чтобы она переопределяла свою версию на самую высокую (1.1.1).

В заключение заменить

implementation "android.arch.lifecycle:extensions:1.1.1"

на

api "android.arch.lifecycle:extensions:1.1.1"
0 голосов
/ 26 апреля 2018

Видимо support-v4 был причиной конфликта. В случае этого вопроса задача зависимости Gradle не работала правильно, но для всех, кто сталкивается с этой проблемой:

./gradlew :app:dependencies покажет подчиненные зависимости, используемые вашими зависимостями. Найдите в выходных данных этой команды (изменив app имя вашего модуля) зависимость, вызывающую конфликт.

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