web-dev-qa-db-fra.com

Avertissement: conflit avec la dépendance 'com.Android.support:support-annotations'

J'ai essayé presque tous les trucs du livre. 

  • ResolutionStrategy.force
  • Modules exclus

Mais rien ne semble fonctionner, voici mon build.gradle. J'utilise la version 1.2.3 de Gradle. Quelqu'un peut-il s'il vous plaît éclaircir quoi d'autre pourrait être le problème avec mon code. 

La seule chose que je n’ai pas essayée, c’est de changer de version de Gradle . C’est un cas très élémentaire de test Espresso. Merci!

apply plugin: 'com.Android.application'
Android {
    configurations.all {
        resolutionStrategy.force 'com.Android.support:support-annotations:22.1.0'
    }
    compileSdkVersion 22
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.example.rasika.job"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}
repositories {
    mavenCentral()
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.Android.support:appcompat-v7:22.1.1'

    testCompile 'junit:junit:4.12'

    androidTestCompile 'com.Android.support.test:runner:0.3'
    androidTestCompile 'com.Android.support.test:rules:0.3'
    androidTestCompile 'com.Android.support.test.espresso:espresso-core:2.2'
    androidTestCompile 'com.Android.support.test.uiautomator:uiautomator-v18:2.1.1'
    androidTestCompile 'com.Android.support.test.espresso:espresso-contrib:2.0'
}
37
Mabad

J'ai fourré exemple Google-Android-topeka et mis à jour la version de appcompat vers 23.1.0, même message:

Avertissement: Conflit avec dépendance "com.Android.support:support-annotations". Versions résolues pour app (23.1.0) et l'application de test (23.0.1) diffèrent.

J'ai ajouté:

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

Maintenant, les deux résolvent en 23.1.0, l'avertissement est parti, et l'application et les tests fonctionnent toujours.

Je ne suis pas sûr que ce soit la meilleure solution, alors je cherche une autre solution, mais j'ai trouvé votre question. 

Mise à jour: Lire cette bonne explication de PaulR .

Update2: Confirmé, Google google test le fait.

// Testing-only dependencies
// 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.0.1'

Update3: Une autre bonne réponse de CommonsWare .

Vérifiez vos versions/conflits/résolutions spécifiques en utilisant:

./gradlew -q yourmodule:dependencies

 enter image description here

Appcompat est 22.1.1 dans votre cas, mais vous forcez 22.1.0.

Update4: Conflit de dépendances expliqué à Le système de construction Android (Android Dev Summit 2015) .

 enter image description here

Résolution des conflits entre test principal et test APK

Lorsque des tests d'instrumentation sont exécutés, l'APK principal et l'APK de test partager le même chemin de classe. La construction de Gradle échouera si l'APK principal et le test APK utilise la même bibliothèque (par exemple, Guava) mais dans des fichiers différents versions. Si Gradle ne l'a pas compris, votre application pourrait se comporter différemment pendant les tests et pendant la marche normale (y compris le crash dans l'un des cas).

Pour que la compilation réussisse, assurez-vous que les deux APK utilisent la même chose version. Si l'erreur concerne une dépendance indirecte (une bibliothèque que vous n'avez pas mentionnée dans votre build.gradle), ajoutez simplement une dépendance pour le version plus récente de la configuration ("compiler" ou "androidTestCompile") qui en a besoin. Vous pouvez également utiliser la stratégie de résolution de Gradle mécanisme. Vous pouvez inspecter l'arbre de dépendance en exécutant ./gradlew : app: dépendances et ./gradlew: app: androidDependencies.

52
albodelu

J'ai résolu le conflit en ajoutant une dépendance:

androidTestCompile 'com.Android.support:support-annotations:23.2.0'
26
Andrey

J'ai eu le même problème, résolu par ceci:

// build.gradle
...
Android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }
}

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

solution a été trouvée ici: https://github.com/codepath/Android_guides/wiki/UI-Testing-with-Espresso

UPDATE: Enfin, le bloc de dépendances dans mon build.gradle ressemble à ceci:

dependencies {
    ...        
    compile 'com.Android.support:appcompat-v7:23.2.1'
    compile 'com.Android.support:support-v4:23.2.1'
    compile 'com.Android.support:design:23.2.1'
    ...     

    // Necessary if your app targets Marshmallow (since Espresso
    // hasn't moved to Marshmallow yet)
    androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test.espresso:espresso-intents:2.2.2') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test:runner:0.5') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test:rules:0.5') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test.espresso:espresso-contrib:2.2.2') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support:support-annotations:23.2.1') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test.uiautomator:uiautomator-v18:2.1.2') {
        exclude group: 'com.Android.support'
    }
}
15
Dmitry

Cela m’est arrivé récemment lors de l’ajout du uiautomator. Pour résoudre ce problème, vous devez déterminer la ou les dépendances utilisant le module obsolète. Vous pouvez le faire en encapsulant chaque dépendance androidTestCompile dans un bloc, comme suit:

androidTestCompile ('com.Android.support.test.espresso:espresso-core:2.2') {
    transitive = false;
}

Ceci pourrait casser quelques autres choses cependant, vous devez donc faire attention. J'ai été en mesure d'identifier exactement les deux dépendances à l'origine de ce problème et d'ajouter ce mécanisme de blocage à celles-ci.

7
Phil

J'ai résolu le conflit en excluant la bibliothèque support-annotation des dépendances runner et espresso-core:

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

Ajoutez ceci à votre build.gradle principal:

allprojects {
    ...
    configurations.all {
        resolutionStrategy.force 'com.Android.support:support-annotations:23.1.1'
    }
    ...
}
3
Sid

Ajoutez des codes de suivi à votre bloc de dépendance dans le fichier build.gradle

compile 'com.Android.support:support-annotations:23.2.1'
testCompile 'com.Android.support:support-annotations:23.2.1'
androidTestCompile 'com.Android.support:support-annotations:23.2.1'
3
TeeTracker

J'ai résolu le conflit en ajoutant une dépendance: 

compile 'com.Android.support:appcompat-v7:23.2.1'
 compile 'com.Android.support:design:23.2.1'
...
 androidTestCompile 'com.Android.support:support-annotations:23.2.1'
1
ayac3j

Pour moi cela a bien fonctionné 

dependencies {

    androidTestCompile 'com.Android.support:support-annotations:23.1.1'
}
1
erluxman

androidTestCompile passe à test Compile. Et rappelez-vous qu'il ne faut pas le changer pour le compiler, il suffit que ces dépendances soient compilées dans notre APK de débogage ou test APK.

1
Rocko

J'ai résolu le conflit en ajoutant une dépendance:

androidTestCompile "com.Android.support:support-annotations:26.0.0-beta1"
0
Devix

En aussi entré dans le problème en disant 

Impossible de résoudre 

com.Android.support:support-annotations:23.1.0

et essayé de trouver dans d'autres serveurs,

Mais ce qui a résolu mon problème, c'est d'ajouter:

google-service.json 

fichier de 

https://developers.google.com/mobile/add

et copier et coller dans 

YourAndroidProject/app 

Puis recompilez-le et j'espère que votre code volera 

0
erluxman

Utilisez ceci pour résoudre un conflit

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