107 votes

Conflit avec la dépendance 'com.Android.support:support-annotations' dans le projet ':app'. Les versions résolues pour l'application (26.1.0) et l'application de test (27.1.1) diffèrent.

Je suis nouveau dans le développement d'applications Android. Lorsque j'ai essayé de créer un nouveau projet, Android Project...le message suivant s'est affiché...

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 pour app (26.1.0) et test app (27.1.1) diffèrent. Voir https://d.Android.com/r/tools/test-apk-dependency-conflicts.html pour les détails. Information:Tâches Gradle [:app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar]

Voici la capture d'écran de mon projet cliquez ici pour voir la capture d'écran de l'erreur que j'ai obtenue

J'ai également essayé d'ajouter ce code à ma dépendance androidTestCompile 'com.Android.support:support-annotations:23.3.0' cela n'a pas fonctionné. J'ai également essayé 27.1.1 et 26.1.0.. cela n'a pas fonctionné non plus.

182voto

emadabel Points 1891

Sur la base de votre capture d'écran, j'ai trouvé deux solutions qui fonctionnent :

Première solution : ajoutez aux dépendances de votre module gradle cette ligne

compile 'com.android.support:support-annotations:27.1.1'

et synchroniser votre projet

Note : si vous utilisez Android studio 3+, changez compile à implementation

Deuxième solution : Configurer les propriétés du projet trouvées dans la documentation https://developer.Android.com/studio/build/gradle-tips.html#configure-project-wide-properties

dans le projet gradle ajouter cette ligne :

// This block encapsulates custom properties and makes them available to all
// modules in the project.
ext {
    // The following are only a few examples of the types of properties you can define.
    compileSdkVersion = 26
    // You can also use this to specify versions for dependencies. Having consistent
    // versions between modules can avoid behavior conflicts.
    supportLibVersion = "27.1.1"
}

Ensuite, pour accéder à cette section, changez compileSdkVersion ligne à être

compileSdkVersion rootProject.ext.compileSdkVersion

et à dependencies changer la bibliothèque importée pour qu'elle soit comme ceci :

compile "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"

et synchroniser votre projet

Note : si vous utilisez Android studio 3+, changez compile à implementation

Pour la différence entre compile et implementation regardez ceci Quelle est la différence entre implémentation et compilation dans Gradle ?

61voto

Harsh Jain Points 1222

Ajoutez la ligne ci-dessous dans votre fichier app.gradle avant le bloc depencencies.

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

Il y a également une capture d'écran ci-dessous pour une meilleure compréhension.

Configurations.all block

  1. le bloc configurations.all ne sera utile que si vous voulez que votre sdk cible soit 26. Si vous pouvez le changer en 27, l'erreur disparaîtra sans ajouter le bloc de configuration dans le fichier app.gradle.

  2. Il existe un autre moyen de résoudre l'erreur en supprimant toutes les implémentations de test du fichier app.gradle. Dans ce cas également, il n'est pas nécessaire d'ajouter le bloc de configuration ni de modifier la version de targetsdk.

J'espère que cela vous aidera.

35voto

Harish Points 2900

Si vous utilisez la version 26 alors la version des dépendances doit être 1.0.1 et 3.0.1 c'est-à-dire comme suit

  androidTestImplementation 'com.android.support.test:runner:1.0.1'
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

Si vous utilisez la version 27 alors la version des dépendances doit être 1.0.2 et 3.0.2 c'est-à-dire comme suit

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

26voto

Uray Febri Points 323

Si vous utilisez Android Studio 3.1.+ ou supérieur

Il suffit de mettre ça dans les dépendances de votre gradle :

implementation 'com.android.support:support-annotations:27.1.1'

Dans l'ensemble, comme ça :

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    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'

    implementation 'com.android.support:support-annotations:27.1.1'
}

23voto

desgraci Points 1165

Ceci est dû à un conflit de versions, pour le résoudre, il suffit de forcer une mise à jour de la version de votre support-annotations, en ajoutant cette ligne sur votre module : app gradle

implementation ('com.android.support:support-annotations:27.1.1')

J'espère que cela résoudra votre problème ;)

Modifier

J'allais oublier, vous pouvez déclarer une seule propriété supplémentaire ( https://docs.gradle.org/current/userguide/writing_build_scripts.html#sec:extra_properties ) pour la version, allez dans le fichier gradle de votre projet (ou de votre top), et déclarez votre support, ou juste pour cet exemple, la version d'annotation var

ext.annotation_version = "27.1.1"

Ensuite, dans votre module gradle, remplacez-le par :

implementation ("com.android.support:support-annotations:$annotation_version")

Cette solution est très similaire à la solution @emadabel, qui est une bonne alternative pour le faire, mais sans le bloc, ni le rootproject préfixe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X