Conflit avec la dépendance 'com.android.support:support-annotations'. Les versions résolues de l'application (23.1.0) et de l'application de test (23.0.1) diffèrent


119

Lors de la construction, j'obtiens l'erreur suivante:

Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (23.1.0) and test app (23.0.1) differ.

Ce sont mes dépendances gradle

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:support-v4:23.1.0'
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.android.support:design:23.1.0'
    compile 'com.android.support:cardview-v7:23.1.0'
    compile 'com.android.support:recyclerview-v7:23.1.0'
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.squareup.okhttp:okhttp:2.4.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'com.squareup:otto:1.3.8'
    compile 'com.snappydb:snappydb-lib:0.5.2'
    compile 'com.esotericsoftware.kryo:kryo:2.24.0'
    compile 'com.google.dagger:dagger:2.0.1'
    apt 'com.google.dagger:dagger-compiler:2.0.1'
    compile 'javax.annotation:javax.annotation-api:1.2'
    compile 'io.reactivex:rxandroid:1.0.1'
    compile 'io.reactivex:rxjava:1.0.14'
    compile 'com.google.android.gms:play-services-location:8.1.0'
    compile 'com.google.android.gms:play-services-gcm:8.1.0'
    compile 'org.apache.commons:commons-lang3:3.4'
    testCompile 'junit:junit:4.12'
    testCompile 'org.hamcrest:hamcrest-library:1.3'
    testCompile 'org.mockito:mockito-core:1.10.19'
    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.espresso:espresso-intents:2.2.1'
    androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2.1'
    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
}

Comment puis-je réparer cela?


Je peux vous dire que la dépendance 23.1.0 provient de la lib appcompat, car cela inclut les annotations lib. Le 23.0.1 je ne sais pas
— Tim

Il ne fonctionne pas non plus si je passe appcompat retour à 23.0.1
— Barq

Je viens de remplacer 23.1.0 par 23.0.1, partout dans la dépendance, a fonctionné pour moi.
— Shahzad Afridi

Ajoutez une dépendance d'annotation liée à votre erreur de version. readyandroid.wordpress.com/…
— Prêt Android

Ou cela pourrait-il vous aider readyandroid.wordpress.com
— Ready Android

Réponses:


208

Vous pouvez forcer la bibliothèque d'annotations dans votre test en utilisant:

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

Quelque chose comme ça:

  // 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.1.0'
  androidTestCompile 'com.android.support.test:runner:0.4.1'
  androidTestCompile 'com.android.support.test:rules:0.4.1'
  androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
  androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.1'
  androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2.1'

Une autre solution consiste à utiliser ceci dans le fichier de niveau supérieur:

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

8
Cette ligne était la solution: androidTestCompile 'com.android.support:support-annotations:23.1.0'
— barq

4
L'utilisation du paramètre configurations.all a fonctionné pour moi, mais pas dans le fichier de niveau projet, ce que j'ai interprété initialement comme "fichier de niveau supérieur" à partir de la réponse ci-dessus. C'était dans le fichier build.gradle au niveau du module
— OYRM

Ce conflit est-il causé à l'origine par Espresso?
— IgorGanapolsky

resolutionStrategy.force 'com.android.support:support-annotations:23.4.0' ne m'aide pas. Le problème est EspressoContribution pour DatePicker, DrawerActions, RecyclerView, etc. ('com.android.support.test.espresso : espresso-contrib: 2.2.2 ') {module d'exclusion: module d'exclusion' support-annotations ':' support-v4 '}
— Ewoks

3
Juste un point important, pour préciser que nous devons ajouter configurations.all {resolutionStrategy.force 'com.android.support:support-annotations:23.1.0'} à l'intérieur build.gradledu module (application) pour résoudre le problème.
— Programmation AAD du

69

Project Rebuild a résolu mon problème.

Dans le studio Android dans la barre d'outils .. Construire> Rebuild Project.


25

Source: CodePath - Test de l'interface utilisateur avec Espresso

  1. Enfin, nous devons extraire les dépendances Espresso et définir le testeur dans notre application build.gradle:
// build.gradle
...
android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

dependencies {
    ...
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.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.5') {
        // Necessary if your app targets Marshmallow (since the test runner
        // hasn't moved to Marshmallow yet)
        exclude group: 'com.android.support', module: 'support-annotations'
    }
}

J'ai ajouté cela à mon fichier gradle et l'avertissement a disparu.

De plus, si vous obtenez une autre dépendance répertoriée comme en conflit, telle que les annotations de support, essayez de l'exclure également des dépendances androidTestCompile.


1
l'exclusion de l'individu androidtestcompile fonctionne pour moi
— Nantha kumar

12

tu peux essayer d'utiliser

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

au lieu de

androidTestCompile 'com.android.support.test:runner:0.4.1'

androidTestCompile 'com.android.support.test:rules:0.4.1'

androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.1'

6

Je recevais cette erreur

Erreur: l'exécution a échoué pour la tâche «: app: preDebugAndroidTestBuild». Conflit avec la dépendance 'com.android.support:support-annotations' dans le projet ': app'. Les versions résolues de l'application (26.1.0) et de l'application de test (27.1.1) diffèrent. Voir https://d.android.com/r/tools/test-apk-dependency-conflicts.html pour plus de détails.

J'avais les dépendances suivantes dans mon fichier build.gradle sous Gradle Scripts

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.android.support:support-vector-drawable:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Donc, je l'ai résolu en commentant les dépendances suivantes

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

Donc mes dépendances ressemblent à ça

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.android.support:support-vector-drawable:26.1.0'
//testImplementation 'junit:junit:4.12'
//androidTestImplementation 'com.android.support.test:runner:1.0.2'
//androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

J'espère que ça aide!


1
Vous avez donc supprimé les bibliothèques de test? Ce n'est pas très utile si vous avez besoin de ces bibliothèques.
— Pantalon

4

J'obtenais la même erreur aujourd'hui:

Erreur: l'exécution a échoué pour la tâche ': app: preDebugAndroidTestBuild'.> Conflit avec la dépendance 'com.android.support:support-annotations' dans le projet ': app'. Les versions résolues de l'application (26.1.0) et de l'application de test (27.1.1) diffèrent.

Ce que j'ai fait:

  • J'ai simplement mis à jour toutes mes dépendances au 27.1.1lieu de26.1.0
  • Aussi, mis à jour mon compileSdkVersion 27et targetSdkVersion 27qui étaient 26plus tôt

Et l' com.android.support:support-annotationserreur avait disparu!

Pour Réf:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    implementation 'com.android.support:design:27.1.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

1

Dans mon cas, j'ai ajouté le code ci-dessous dans les dépendances de build.gradle au niveau de l'application

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

Après cela, je nettoie le projet et le reconstruit.Mon problème est résolu.


0

Modifiez le fichier build.gradle au niveau de votre application:

implementation 'com.android.support:appcompat-v7:23.1.0'

à

 implementation 'com.android.support:appcompat-v7:23.0.1'

0

Essaye ça :

apply plugin: 'com.android.application'

android {
compileSdkVersion 27
defaultConfig {
    applicationId "com.example.yourpackagename"
    minSdkVersion 15
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.