rhari rhari - 6 months ago 316
Android Question

Android Conflict with dependency appcompat

I am trying to add the espresso-contrib library to my project. Here is my build.gradle file :

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.2"

defaultConfig {
applicationId "example.com.littlebox_hari"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
/*configurations.all {
resolutionStrategy {
force 'com.android.support:appcompat-v7:23.4.0'
}
}*/
}


dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.squareup.retrofit2:retrofit:2.0.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'
androidTestCompile 'com.android.support.test:runner:0.4'
androidTestCompile 'com.android.support.test:rules:0.4'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.2'
androidTestCompile 'com.android.support.test.espresso:espresso-idling-resource:2.2.2'
compile 'com.android.support:support-annotations:23.4.0'
testCompile 'com.android.support:support-annotations:23.4.0'
androidTestCompile 'com.android.support:support-annotations:23.4.0'
}


I get this error :

Error:Conflict with dependency 'com.android.support:appcompat-v7'. Resolved versions for app (23.4.0) and test app (23.1.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.


If I uncomment the lines in my build.gradle file, I get :

Error:(72) Error retrieving parent for item: No resource found that matches the given name 'TextAppearance.AppCompat.Display1'.
Error:(75) Error retrieving parent for item: No resource found that matches the given name 'TextAppearance.AppCompat.Caption'.
Error:(79) Error retrieving parent for item: No resource found that matches the given name 'TextAppearance.AppCompat.Caption'.
Error:(76) Error retrieving parent for item: No resource found that matches the given name 'TextAppearance.AppCompat.Caption'.
Error:(82) Error retrieving parent for item: No resource found that matches the given name 'TextAppearance.AppCompat.Caption'.
Error:(89) Error retrieving parent for item: No resource found that matches the given name 'TextAppearance.AppCompat.Button'.
D:\Littlebox-Hari\app\build\intermediates\exploded-aar\com.android.support\design\23.1.1\res\values\values.xml
Error:(97, 5) No resource found that matches the given name: attr 'textAllCaps'.
Error:(102, 5) No resource found that matches the given name: attr 'elevation'.
Error:(113, 5) No resource found that matches the given name: attr 'backgroundTint'.
Error:(113, 5) No resource found that matches the given name: attr 'elevation'.
Error:(122, 5) No resource found that matches the given name: attr 'elevation'.
Error:(131, 5) No resource found that matches the given name: attr 'elevation'.


Edit : I added the following line to my build.gradle file :

testCompile 'com.android.support:appcompat-v7:23.4.0'
androidTestCompile 'com.android.support:appcompat-v7:23.4.0'


I still get the same error.

Answer

I also faced this issue today.

First, update the dependencies to their latest versions (0.5 and 2.2.2).

See: https://google.github.io/android-testing-support-library/downloads/

// Android JUnit Runner
androidTestCompile 'com.android.support.test:runner:0.5'

// JUnit4 Rules
androidTestCompile 'com.android.support.test:rules:0.5'

// Espresso core
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'

// Espresso-contrib for DatePicker, RecyclerView, Drawer actions, Accessibility checks, CountingIdlingResource
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.2'

// Espresso-web for WebView support
androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2.2'

// Espresso-idling-resource for synchronization with background jobs
androidTestCompile 'com.android.support.test.espresso:espresso-idling-resource:2.2.2'

Then, you'll face the same error, since the latest version isn't still using the latest version of the support library as of now (23.4.0). There's an issue open on the bug tracker already: https://code.google.com/p/android/issues/detail?id=211490

This worked for me:

dependencies {
    ext {
        supportLibVersion = '23.4.0'
        espressoVersion = '2.2.2'
    }
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    androidTestCompile 'com.android.support.test:runner:0.5'
    androidTestCompile 'com.android.support.test:rules:0.5'
    androidTestCompile "com.android.support.test.espresso:espresso-core:$espressoVersion"
    androidTestCompile ("com.android.support.test.espresso:espresso-contrib:$espressoVersion") {
        exclude module: 'recyclerview-v7'
        exclude module: 'design'
    }
    androidTestCompile "com.android.support.test.espresso:espresso-web:$espressoVersion"
    androidTestCompile "com.android.support.test.espresso:espresso-idling-resource:$espressoVersion"
    androidTestCompile "com.android.support:support-annotations:$supportLibVersion"
    compile "com.android.support:appcompat-v7:$supportLibVersion"
    compile "com.android.support:design:$supportLibVersion"
    compile "com.android.support:appcompat-v7:$supportLibVersion"
    compile "com.android.support:recyclerview-v7:$supportLibVersion"
}