Как мне решить android.арка.жизненный цикл: общие конфликты версий?
Задан проект с таким набором зависимостей:
dependencies {
compile "com.android.support:recyclerview-v7:26.1.0"
compile "com.android.support:support-core-utils:26.1.0"
compile "com.android.support:support-fragment:26.1.0"
compile 'io.reactivex.rxjava2:rxjava:2.1.3'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'android.arch.lifecycle:runtime:1.0.0'
compile 'android.arch.lifecycle:extensions:1.0.0-beta2'
compile 'android.arch.lifecycle:reactivestreams:1.0.0-beta2'
compile "android.arch.persistence.room:runtime:1.0.0-beta2"
compile "android.arch.persistence.room:rxjava2:1.0.0-beta2"
annotationProcessor "android.arch.persistence.room:compiler:1.0.0-beta2"
androidTestCompile "com.android.support:support-annotations:26.1.0"
androidTestCompile 'com.android.support.test:rules:0.5'
androidTestCompile 'android.arch.core:core-testing:1.0.0-beta2'
androidTestCompile "com.android.support:support-core-utils:26.1.0"
androidTestCompile "com.android.support:support-compat:26.1.0"
}
Я получаю следующую ошибку:
Ошибка: конфликт с зависимостью ' android.арка.жизненный цикл: Общий" в проекте": приложение. Разрешенные версии для приложения (1.0.2) и тестового приложения (1.0.0) отличаются. Смотрите http://g.co/androidstudio/app-test-app-conflict для деталей.
Как мне решить эту проблему?
1 ответ:
Несоответствия зависимостей артефактов являются общей проблемой, и я ожидаю, что это будет частая проблема с компонентами архитектуры, учитывая, что версионирование этих компонентов является византийским1.
В этом случае существует недокументированная Версия1.0.2недокументированногоandroid.arch.lifecycle:commonартефакта.
android.arch.lifecycle:extensions:1.0.0-beta2иandroid.arch.lifecycle:reactivestreams:1.0.0-beta2зависят от этой недокументированной версии1.0.2недокументированногоandroid.arch.lifecycle:commonартефакта. Однако соответствующий тестовый артефакт (android.arch.core:core-testing:1.0.0-beta2) зависит от версии1.0.0изandroid.arch.lifecycle:common. В результате мы получаем конфликт.Обходной путь состоит в том, чтобы вручную запросить
1.0.2для тестового кода через:Теперь Gradle будет использовать 1.0.2 как для основного кода, так и для тестового кода, и все будет хорошо.androidTestCompile 'android.arch.lifecycle:common:1.0.2'