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.