Après la mise à niveau vers l'API 22 et le support de la révision de la bibliothèque 22, je reçois l'avertissement suivant:
Avertissement: conflit avec la dépendance 'com.android.support:support-annotations'. Les versions résolues de l'application (22.0.0) et de l'application de test (21.0.3) diffèrent.
Gradle lui-même est plus indulgent, mais Android Studio, pas tellement.
Je n'ai aucune dépendance déclarée avec 21.0.3 ... est-ce que l'une des bibliothèques dépendantes utilise 21.0.3 et Google a oublié de la mettre à jour avec le reste du lot?
Mon build.gradle
avec les extras découpés
android {
compileSdkVersion 22
buildToolsVersion '22'
defaultConfig {
applicationId "com.REDACTED.android"
minSdkVersion 14
targetSdkVersion 22
renderscriptSupportModeEnabled true
versionName '1.0.0'
versionCode 100
}
buildTypes {
release {
minifyEnabled true
zipAlignEnabled true
signingConfig signingConfigs.release
}
debug {
minifyEnabled false
zipAlignEnabled true
signingConfig signingConfigs.debug
}
}
dependencies {
provided 'org.projectlombok:lombok:1.16.2'
googleCompile 'com.google.android.gms:play-services-base:6.5.87'
compile 'com.android.support:support-v4:22.0.0'
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.android.support:support-v13:22.0.0'
compile 'com.android.support:cardview-v7:22.0.0'
compile 'com.android.support:palette-v7:22.0.0'
compile 'com.android.support:support-annotations:22.0.0'
compile 'com.github.chrisbanes.photoview:library:1.2.3'
compile 'org.apache.commons:commons-lang3:3.3.2'
compile 'commons-io:commons-io:2.4'
compile 'commons-codec:commons-codec:1.10'
compile 'com.jakewharton:butterknife:6.1.0'
compile 'com.jakewharton:disklrucache:2.0.2'
compile 'com.squareup:otto:1.3.6'
compile 'com.squareup.picasso:picasso:2.5.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp:2.2.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
compile 'com.squareup.okio:okio:1.2.0'
compile 'com.flaviofaria:kenburnsview:1.0.6'
compile 'com.edmodo:cropper:1.0.1'
compile 'com.getbase:floatingactionbutton:1.8.0'
compile 'com.nispok:snackbar:2.10.2'
compile 'com.github.ksoichiro:android-observablescrollview:1.5.0'
compile 'in.srain.cube:grid-view-with-header-footer:1.0.9'
compile 'de.hdodenhof:circleimageview:1.2.2'
compile fileTree(dir: 'libs', include: '*.jar')
// Test Only Dependencies
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.0'
}
Mise à jour: (Merci Mark)
On dirait que c'est expresso-contrib
+--- com.android.support.test:testing-support-lib:0.1 (*)
\--- com.android.support.test.espresso:espresso-contrib:2.0
+--- com.android.support:recyclerview-v7:21.0.3
| +--- com.android.support:support-annotations:21.0.3
| \--- com.android.support:support-v4:21.0.3
| \--- com.android.support:support-annotations:21.0.3
+--- com.android.support:support-v4:21.0.3 (*)
\--- com.android.support.test.espresso:espresso-core:2.0 (*)
android
android-support-library
copolii
la source
la source
dependencies
tâche peut être en mesure de vous aider à identifier le coupable: gradle.org/docs/current/userguide/...espresso-contrib
c'est la cause ...exclude
de bloquer l'édition 21.0.3 derecyclerview-v7
, récupérer vous-même l'édition 22.0.0 et prier pour qu'elle soit suffisamment compatible pourespresso-contrib
les besoins de. Personnellement, je suis étonné que vous mainteniez votre santé mentale avec cette longue liste de dépendances ... :-)Réponses:
L'étape n ° 1 lorsque vous traitez avec ce genre de choses est de vous familiariser avec Gradle en ligne de commande.
L'étape n ° 2 consiste à exécuter le rapport de dépendances Gradle (par exemple, à
gradle -q app:dependencies
partir de la racine du projet). Cela fournira l'arborescence ASCII comme indiqué dans la mise à jour de la question, et cela devrait vous aider à identifier ce qui demande les versions d'artefacts en conflit.L'étape n ° 3 consiste à décider de ce qui doit être remplacé. Vous avez choisi de remplacer uniquement le conflit (
support-annotations
). Personnellement, j'aurais choisi la racine de l'arborescence de la mauvaise version (recyclerview-v7
), même si pour autant que je sache, ce n'est peut-être pas la meilleure solution dans ce cas.L'étape n ° 4 consiste à ajouter la
exclude
directive pour bloquer ce que vous avez choisi à l'étape 3:L'étape n ° 5 consiste à tester le diable de ce changement. Ce que vous faites, c'est dire que cela
espresso-contrib
doit faire face à l'édition 22.0.0 desupport-annotations
. Cela peut fonctionner. Peut-être pas. Cela dépend de la compatibilité ascendante du conflit. Dans ce cas, celasupport-annotations
devrait être assez bon.L'étape n ° 6 consiste à consommer la boisson de votre choix, adaptée à votre région et à l'heure de la journée.
la source
exclude group: 'com.android.support', module: 'support-annotations'
depuis que votre version a soulevé un avertissement "Impossible de déduire les types d'argument" de Gradledependencies
. Voir cet exemple de Chiu-Ki Chan.Ce que j'ai fait pour le résoudre a été d'ajouter la ligne ci-dessous à mon script build.gradle
Remplacez
xx.x.x
par la version des annotations de support que votre application utilise - cela sera affiché dans vos dépendances, ou le message de synchronisation Gradle comme: enResolved version for app (xx.x.x)
cas de problème de synchronisation.la source
Junit
mais totalement pour obtenir, je peux le faire pour d'autres dépendances également.androidTestCompile 'com.android.support:support-annotations:23.1.1'
En fait, c'est un bogue de la nouvelle version de mise à jour d'Espresso Contrib, vous pouvez vous référer à cette solution de contournement: android-testing / build.gradle
la source
androidTestCompile 'com.android.support.test:runner:0.5'
Veuillez vous référer à https://github.com/JakeWharton/u2020/blob/05a57bf43b9b61f16d32cbe8717af77cd608b0fb/build.gradle#L136-L140
Cela a résolu mon problème.
Sinon, vous pouvez exécuter gradlew sur Windows et ./gradlew pour mac / linux, cela téléchargera votre dépendance si nécessaire
la source
J'ai également rencontré ce problème ainsi que d'autres conflits impliquant appcompat et la solution que j'ai trouvée était d'ajouter des compilations de test et de les définir sur le sdk que vous utilisez actuellement. Dans mon cas, c'est 25, donc ça ressemble à ceci:
De plus, comme vous pouvez le voir, j'ai ajouté la dépendance de conception, qui est liée à Android Material Design.
J'espère que ça aide =)
la source
pour sdkversion 25
la source
vous pouvez exécuter gradlew sur windows et ./gradlew pour mac / linux, cela téléchargera votre dépendance en cas de besoin.
Vous pouvez vérifier si l'une des bibliothèques a une dépendance sur l'annotation de support ou si toute bibliothèque avec est nommée par erreur et essayez de l'exclure dans gradle quelque chose comme ci-dessous
compile ("org.apache.maven: maven-ant-tasks: $ {mavenAntTaskVer} ") {exclure le groupe: 'junit'}
Erreur: conflit avec la dépendance «junit: junit». Les versions résolues de l'application (3.8.1) et de l'application de test (4.12) diffèrent. Voir g.co/androidstudio/app-test-app-conflict pour plus de détails.
c'était l'erreur que j'obtenais, alors j'ai utilisé la ligne de graduation ci-dessus pour résoudre le problème
la source
Supprimez simplement ces lignes dans votre fichier build.gradle:
la source
C'est un problème courant dans le test d'instrumentation comme indiqué ici et peut être résolu simplement en ajoutant les dépendances pour androidTestCompile dans le build.gradle. Dans mon cas, un conflit est survenu dans les dépendances appcompat, recyclerview et design. Et résolu en ajoutant les lignes suivantes
la source
J'avais le même problème avec 26.0.0 et 27.1.1 et je me contentais de mettre à niveau l'ancien pour le faire fonctionner plus tard.
la source