给定一个具有这组依赖项的项目:
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。
如何解决此问题?
答案 0 :(得分:2)
工件依赖性不一致是一个常见问题,我认为这是架构组件的常见问题,因为这些组件的版本化是拜占庭 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
测试代码:
androidTestCompile 'android.arch.lifecycle:common:1.0.2'
Gradle现在将主要代码和测试代码都使用1.0.2,一切都很好。
1 The term "byzantine"用于描述不必要的复杂事物。 The Byzantines可能用“像架构组件的版本控制系统”这样的短语描述了复杂的东西,如果那些组件存在的话。