我如何解决android.arch.lifecycle:常见的版本冲突?

时间:2017-10-10 20:54:27

标签: android android-architecture-components

给定一个具有这组依赖项的项目:

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"
}

我收到以下错误:

  

错误:与项目':app'中的依赖项'android.arch.lifecycle:common'冲突。 app(1.0.2)和测试app(1.0.0)的已解决版本不同。有关详细信息,请参阅http://g.co/androidstudio/app-test-app-conflict

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

工件依赖性不一致是一个常见问题,我认为这是架构组件的常见问题,因为这些组件的版本化是拜占庭 1

在这种情况下,未记录的1.0.2工件有一个未记录的版本android.arch.lifecycle:common

android.arch.lifecycle:extensions:1.0.0-beta2android.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测试代码:

androidTestCompile 'android.arch.lifecycle:common:1.0.2'

Gradle现在将主要代码和测试代码都使用1.0.2,一切都很好。

1 The term "byzantine"用于描述不必要的复杂事物。 The Byzantines可能用“像架构组件的版本控制系统”这样的短语描述了复杂的东西,如果那些组件存在的话。

相关问题