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?

barq
la source
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'
}
Gabriele Mariotti
la source
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.

Sushanth Kille
la source
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.

rexxar
la source
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'
jingsong yang
la source
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!

Shahbaz Ali
la source
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'
}
Rohit Sharma
la source
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.

Mohammed Nishar
la source
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'
chetu
la source
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'
}
Hanisha
la source