应用程序(22.0.0)和testing应用程序(21.0.3)的已解决版本不同

升级到API 22并支持lib修订版本22后,出现以下警告:

警告:与依赖关系com.android.support:support-annotations冲突。 应用程序(22.0.0)和testing应用程序(21.0.3)的已解决版本不同。

Gradle本身更为宽容,但Android Studio并不是那么重要。

我没有与21.0.3声明的依赖关系…是使用21.0.3的依赖库之一,谷歌忘记更新与批处理的其余部分?

我的build.gradle与extras剪掉了

 android { compileSdkVersion 22 buildToolsVersion '22' defaultConfig { applicationId "com.REDACTED.android" minSdkVersion 14 targetSdkVersion 22 renderscriptSupportModeEnabled true versionName '1.0.0' versionCode 100 } buildTypes { release { minifyEnabled true zipAlignEnabled true signingConfig signingConfigs.release } debug { minifyEnabled false zipAlignEnabled true signingConfig signingConfigs.debug } } dependencies { provided 'org.projectlombok:lombok:1.16.2' googleCompile 'com.google.android.gms:play-services-base:6.5.87' compile 'com.android.support:support-v4:22.0.0' compile 'com.android.support:appcompat-v7:22.0.0' compile 'com.android.support:support-v13:22.0.0' compile 'com.android.support:cardview-v7:22.0.0' compile 'com.android.support:palette-v7:22.0.0' compile 'com.android.support:support-annotations:22.0.0' compile 'com.github.chrisbanes.photoview:library:1.2.3' compile 'org.apache.commons:commons-lang3:3.3.2' compile 'commons-io:commons-io:2.4' compile 'commons-codec:commons-codec:1.10' compile 'com.jakewharton:butterknife:6.1.0' compile 'com.jakewharton:disklrucache:2.0.2' compile 'com.squareup:otto:1.3.6' compile 'com.squareup.picasso:picasso:2.5.0' compile 'com.squareup.retrofit:retrofit:1.9.0' compile 'com.squareup.okhttp:okhttp:2.2.0' compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0' compile 'com.squareup.okio:okio:1.2.0' compile 'com.flaviofaria:kenburnsview:1.0.6' compile 'com.edmodo:cropper:1.0.1' compile 'com.getbase:floatingactionbutton:1.8.0' compile 'com.nispok:snackbar:2.10.2' compile 'com.github.ksoichiro:android-observablescrollview:1.5.0' compile 'in.srain.cube:grid-view-with-header-footer:1.0.9' compile 'de.hdodenhof:circleimageview:1.2.2' compile fileTree(dir: 'libs', include: '*.jar') // Test Only Dependencies androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0' androidTestCompile 'com.android.support.test:testing-support-lib:0.1' androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.0' } 

更新:(感谢马克)

看起来像是浓缩咖啡

 +--- com.android.support.test:testing-support-lib:0.1 (*) \--- com.android.support.test.espresso:espresso-contrib:2.0 +--- com.android.support:recyclerview-v7:21.0.3 | +--- com.android.support:support-annotations:21.0.3 | \--- com.android.support:support-v4:21.0.3 | \--- com.android.support:support-annotations:21.0.3 +--- com.android.support:support-v4:21.0.3 (*) \--- com.android.support.test.espresso:espresso-core:2.0 (*) 

处理这类事情的第一步就是使用命令行Gradle。

第二步是运行Gradle依赖关系报告 (例如,从项目根目录下的gradle -q app:dependencies )。 这将提供ASCII树,如问题更新中所示,并且它应该帮助您确定什么是要求冲突的神器版本。

第三步是决定需要更换什么。 你select只取代冲突( support-annotations )。 就个人而言,我会recyclerview-v7错误版本树( recyclerview-v7 )的根目录,尽pipe我知道这可能不是这种情况下最好的行为方式。

步骤#4是添加exclude指令来阻止您在步骤#3中select的内容:

 androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.0') { exclude module: 'support-annotations' } 

第五步是testing这个变化。 你在做的是说espresso-contrib 必须处理22.0.0版本的support-annotations 。 这可能工作。 这可能不会。 这取决于冲突的向后兼容性。 在这种情况下, support-annotations应该是相当不错的。

步骤#6是消费你select的饮料,一个适合你的地点和一天的时间。

我所做的解决它是将下面的行添加到我的build.gradle脚本

 androidTestCompile 'com.android.support:support-annotations:xx.xx' 

xx.xxreplace为您应用程序使用的任何版本的支持注释 – 将显示在您的依赖项中,或将Gradle同步消息显示为: Resolved version for app (xx.xx)应该在同步时出现问题。

其实这是一个新的更新版本的Espresso Contrib的错误,你可以参考这个解决方法: android-testing / build.gradle

 configurations.all { resolutionStrategy.force 'com.android.support:support-annotations:22.1.0' } 

请参考https://github.com/JakeWharton/u2020/blob/05a57bf43b9b61f16d32cbe8717af77cd608b0fb/build.gradle#L136-L140

 configurations.all { resolutionStrategy { force 'com.android.support:support-annotations:23.1.1' } } 

这解决了我的问题。

或者,你可以在Windows上运行gradlew,在mac / linux上运行./gradlew,这将在需要的时候下载你的依赖

为sdkversion 25

  androidTestCompile 'com.android.support:support-annotations:25.2.0' 

我也遇到了这个问题,以及涉及到appcompat的其他冲突,我发现解决scheme是添加testing编译,并将其设置为您正在使用的SDK。 在我的情况下,它是25,所以它看起来像这样:

 androidTestCompile 'com.android.support:support-annotations:25.+' androidTestCompile 'com.android.support:appcompat-v7:25.+' androidTestCompile 'com.android.support:support-v4:25.+' androidTestCompile 'com.android.support:recyclerview-v7:25.+' androidTestCompile 'com.android.support:design:25.+' 

此外,正如您所看到的,我添加了与Android Material Design相关的devise依赖关系。

希望它有助于=)

你可以在windows上运行gradlew,在mac / linux上运行./gradlew,这将在需要的时候下载你的依赖。

你可以检查一个库是否依赖于支持注释或者任何被错误命名的库,并且试图将其排除

compile(“org.apache.maven:maven-ant-tasks:$ {mavenAntTaskVer}”){exclude group:'junit'}

错误:与依赖关系“junit:junit”冲突。 应用程序(3.8.1)和testing应用程序(4.12)的已解决版本不同。 有关详细信息,请参阅g.co/androidstudio/app-test-app-conflict。

这是我得到的错误,所以我用上面的gradle线来解决这个问题

这是仪器testing中的常见问题,可以通过在build.gradle中添加androidTestCompile的依赖关系来解决。 在我的情况下,在appcompat,recyclerview和devise依赖关系中出现冲突。 并通过添加以下行来解决

  androidTestCompile 'com.android.support:appcompat-v7:23.4.0' androidTestCompile 'com.android.support:recyclerview-v7:23.4.0' androidTestCompile 'com.android.support:design:23.4.0'