Как мне решить 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'