警告:与依赖冲突com.android.support:support-annotations'

我已经尝试了书中几乎所有的技巧。

  • ResolutionStrategy.force
  • 不包括模块

但似乎没有任何工作,下面是我的build.gradle。 我正在使用Gradle版本1.2.3。 有人可以抛出我的代码还有什么可能是错的。

我没有尝试过的唯一的事情就是改变Gradle的版本。 这是一个非常基本的咖啡testing案例。 谢谢!

apply plugin: 'com.android.application' android { configurations.all { resolutionStrategy.force 'com.android.support:support-annotations:22.1.0' } compileSdkVersion 22 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.example.rasika.job" minSdkVersion 16 targetSdkVersion 22 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } repositories { mavenCentral() } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.1.1' testCompile 'junit:junit:4.12' androidTestCompile 'com.android.support.test:runner:0.3' androidTestCompile 'com.android.support.test:rules:0.3' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2' androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1' androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.0' } 

我分叉android-topeka谷歌示例和更新appcompat版本为23.1.0,相同的消息:

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

我补充说:

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

现在都解决到23.1.0,警告消失了,应用程序和testing仍然工作。

我不知道这是更好的解决scheme,所以我正在寻找另一个,但发现你的问题。

更新:请阅读PaulR的这个很好的解释 。

Update2:确认, Androidtesting谷歌示例做到这一点。

 // Testing-only dependencies // Force usage of support annotations in the test app, since it is internally used by the runner module. androidTestCompile 'com.android.support:support-annotations:23.0.1' 

Update3 : CommonsWare的另一个好回应 。

检查您的具体版本/冲突/解决scheme使用:

 ./gradlew -q yourmodule:dependencies 

在这里输入图像说明

Appcompat是22.1.1在你的情况下,但你是强制22.1.0。

Update4:在Android构build系统(Android Dev Summit 2015)中解释的依赖冲突。

在这里输入图像说明

解决主APK之间的冲突

当仪器testing运行时,主APK和testingAPK共享相同的类path。 如果主APK和testingAPK使用相同的库(例如Guava),但是使用不同的版本,则Gradle构build将失败。 如果gradle没有捕捉到,那么在testing和正常运行期间(包括崩溃),您的应用可能会有不同的performance。

为了使构build成功,请确保两个APK使用相同的版本。 如果错误是关于一个间接的依赖关系 (一个在build.gradle中没有提到的库),那么只需要为新版本添加一个依赖项到 需要它 的configuration (“compile”或者“androidTestCompile”) 您也可以使用Gradle的解决策略机制。 您可以通过运行./gradlew:app:dependencies和./gradlew:app:androidDependencies检查依赖关系树。

我通过添加依赖来解决冲突:

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

我有同样的问题,由此解决:

 // build.gradle ... android { ... defaultConfig { ... testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } } dependencies { ... androidTestCompile('com.android.support.test.espresso:espresso-core:2.2') { // Necessary if your app targets Marshmallow (since Espresso // hasn't moved to Marshmallow yet) exclude group: 'com.android.support', module: 'support-annotations' } androidTestCompile('com.android.support.test:runner:0.3') { // Necessary if your app targets Marshmallow (since the test runner // hasn't moved to Marshmallow yet) exclude group: 'com.android.support', module: 'support-annotations' } } 

解决scheme在这里find: https : //github.com/codepath/android_guides/wiki/UI-Testing-with-Espresso

更新:最后依赖关系阻止在我的build.gradle看起来像这样:

 dependencies { ... compile 'com.android.support:appcompat-v7:23.2.1' compile 'com.android.support:support-v4:23.2.1' compile 'com.android.support:design:23.2.1' ... // Necessary if your app targets Marshmallow (since Espresso // hasn't moved to Marshmallow yet) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') { exclude group: 'com.android.support' } androidTestCompile('com.android.support.test.espresso:espresso-intents:2.2.2') { exclude group: 'com.android.support' } androidTestCompile('com.android.support.test:runner:0.5') { exclude group: 'com.android.support' } androidTestCompile('com.android.support.test:rules:0.5') { exclude group: 'com.android.support' } androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.2') { exclude group: 'com.android.support' } androidTestCompile('com.android.support:support-annotations:23.2.1') { exclude group: 'com.android.support' } androidTestCompile('com.android.support.test.uiautomator:uiautomator-v18:2.1.2') { exclude group: 'com.android.support' } } 

最近在我joinuiautomator时发生了这种情况。 要解决这个问题,你需要找出哪个依赖关系或依赖关系正在使用过时的模块。 你可以通过将每个androidTestCompile依赖包装到一个块中来做到这一点,就像这样:

 androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2') { transitive = false; } 

可能会破坏一些其他的东西,所以你需要小心。 我能够准确地确定哪两个依赖项对我造成了这个问题,并且只是把这个阻塞机制添加到这些。

在build.gradle文件中添加跟随代码到你的依赖块

 compile 'com.android.support:support-annotations:23.2.1' testCompile 'com.android.support:support-annotations:23.2.1' androidTestCompile 'com.android.support:support-annotations:23.2.1' 

我通过从runner和espresso-core依赖关系中排除了support-annotation库来解决冲突:

 androidTestCompile 'com.android.support.test:runner:0.5',{ exclude group: 'com.android.support', module: 'support-annotations' } androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2.2'){ exclude group: 'com.android.support', module: 'support-annotations' } 

添加到你的主build.gradle:

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

androidTestCompile更改为testing编译。 并提醒不要改变它编译,只需要这个依赖项被编译到我们的debuggingAPK或testingAPK。

对我来说这工作得很好

 dependencies { androidTestCompile 'com.android.support:support-annotations:23.1.1' } 

我通过添加依赖来解决冲突:

 compile 'com.android.support:appcompat-v7:23.2.1' compile 'com.android.support:design:23.2.1' ... androidTestCompile 'com.android.support:support-annotations:23.2.1' 

在也陷入了问题的说法

无法解决

 com.android.support:support-annotations:23.1.0 

并试图在其他服务器上查找,

但是,解决我的问题是增加:

 google-service.json 

文件来自

https://developers.google.com/mobile/add

并复制并粘贴到

 YourAndroidProject/app 

然后重新编译它,我希望你的代码会飞

用这个来解决冲突

 androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) 

我通过添加依赖来解决冲突:

 androidTestCompile "com.android.support:support-annotations:26.0.0-beta1"