Resolved versions for app (22.0.0) and test app (21.0.3) differ

AndroidAndroid Support-Library

Android Problem Overview


After upgrading to API 22 and support lib revision 22 I'm getting the following warning:

> Warning:Conflict with dependency > 'com.android.support:support-annotations'. Resolved versions for app > (22.0.0) and test app (21.0.3) differ.

Gradle itself is more forgiving, but Android Studio, not so much.

I have no dependencies declared with 21.0.3 ... is one of the dependent libraries using 21.0.3 and Google forgot to update it with the rest of the batch?

My build.gradle with the extras cut out

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

Update: (Thanks Mark)

Looks like it's espresso-contrib

+--- 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 (*)

Android Solutions


Solution 1 - Android

Step #1 when dealing with this sort of thing is to get comfortable with command-line Gradle.

Step #2 is to run the Gradle dependencies report (e.g., gradle -q app:dependencies from the project root). This will provide the ASCII tree as shown in the update to the question, and it should help you identify what is asking for the conflicting artifact versions.

Step #3 is to decide what needs replacing. You elected to replace just the conflict (support-annotations). Personally, I would have gone with the root of the wrong-version tree (recyclerview-v7), though for all I know that might not be the best course of action in this case.

Step #4 is to add the exclude directive to block what you chose in Step #3:

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

Step #5 is to test the heck out of this change. What you are doing is saying that espresso-contrib has to deal with the 22.0.0 edition of support-annotations. That may work. That may not. It depends on the backwards compatibility of the conflict. In this case, support-annotations should be pretty good about it.

Step #6 is to consume the beverage of your choice, one appropriate for your locale and time of day.

Solution 2 - Android

What I did to solve it was add the below line in to my build.gradle script

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

Replace xx.x.x with whatever version of support-annotations your app is using - this will be shown in your dependencies, or the Gradle sync message as: Resolved version for app (xx.x.x) should there be a problem syncing.

Solution 3 - Android

Actually it's a bug of new update version of Espresso Contrib, you can refer this workaround : android-testing/build.gradle

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

Solution 4 - Android

Please refer https://github.com/JakeWharton/u2020/blob/05a57bf43b9b61f16d32cbe8717af77cd608b0fb/build.gradle#L136-L140

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

This solved my issue.

Alternatively you can run gradlew on windows and ./gradlew for mac/linux this will download your dependency when needed

Solution 5 - Android

I also ran into this problem as well as other conflicts involving appcompat and the solution I found was adding test compiles and setting them to the sdk you are currently using. In my case it's 25, so it looks like this:

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.+'

Furthermore, as you can see I added the design dependency, which is related to Android Material Design.

Hope it helps =)

Solution 6 - Android

for sdkversion 25

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

Solution 7 - Android

you can run gradlew on windows and ./gradlew for mac/linux this will download your dependency when needed.

You can check if one of the library has dependency on the support annotation or any library with is named in error and try to excluded it in gradle something like below

compile("org.apache.maven:maven-ant-tasks:${mavenAntTaskVer}‌​") { exclude group: 'junit' }

Error:Conflict with dependency 'junit:junit'. Resolved versions for app (3.8.1) and test app (4.12) differ. See g.co/androidstudio/app-test-app-conflict for details.

this was the error i was getting so I used above gradle line to fix the issue

Solution 8 - Android

Simply delete these lines in your build.gradle file:

androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

Solution 9 - Android

This is common issue in instrumentation test as stated here and can be resolved simply by adding the dependencies for androidTestCompile inside the build.gradle. In my case conflict arised in appcompat, recyclerview and design dependencies. And resolved by adding following lines

    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'

Solution 10 - Android

I was having the same problem with 26.0.0 and 27.1.1 and actually just upgrading the former to the later make it work.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestioncopoliiView Question on Stackoverflow
Solution 1 - AndroidCommonsWareView Answer on Stackoverflow
Solution 2 - AndroidRenan NeryView Answer on Stackoverflow
Solution 3 - AndroidbonyView Answer on Stackoverflow
Solution 4 - Androidmaruti060385View Answer on Stackoverflow
Solution 5 - AndroidgmartinsnullView Answer on Stackoverflow
Solution 6 - Androiddc10View Answer on Stackoverflow
Solution 7 - Androidmaruti060385View Answer on Stackoverflow
Solution 8 - Androidshiv om BhardwajView Answer on Stackoverflow
Solution 9 - AndroidcammandoView Answer on Stackoverflow
Solution 10 - AndroidEd_View Answer on Stackoverflow