Toutes les bibliothèques com.android.support doivent utiliser exactement la même spécification de version

788

Après la mise à jour vers Android Studio 2.3, j'ai reçu ce message d'erreur. Je sais que c'est juste un indice car l'application fonctionne normalement, mais c'est vraiment étrange.

Toutes les bibliothèques com.android.support doivent utiliser exactement la même spécification de version (le mélange de versions peut entraîner des plantages d'exécution). Trouvé les versions 25.1.1, 24.0.0. Les exemples incluent com.android.support:animated-vector-drawable:25.1.1 et com.android.support:mediarouter-v7:24.0.0

entrez la description de l'image ici

mon gradle:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'

    compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support:support-v4:25.1.1'
    compile 'com.android.support:design:25.1.1'
    compile 'com.android.support:recyclerview-v7:25.1.1'
    compile 'com.android.support:cardview-v7:25.1.1'
    compile 'com.google.android.gms:play-services-maps:10.2.0'
    compile 'com.google.android.gms:play-services:10.2.0'

    compile 'io.reactivex.rxjava2:rxjava:2.0.1'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.jakewharton:butterknife:8.4.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'com.blankj:utilcode:1.3.6'
    compile 'com.orhanobut:logger:1.15'
    compile 'com.facebook.stetho:stetho:1.4.2'

    provided 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.5'

    compile 'com.mikepenz:iconics-core:2.8.2@aar'
    compile('com.mikepenz:materialdrawer:5.8.1@aar') { transitive = true }
    compile 'com.mikepenz:google-material-typeface:2.2.0.3.original@aar'
    compile 'me.zhanghai.android.materialprogressbar:library:1.3.0'
    compile 'com.github.GrenderG:Toasty:1.1.1'
    compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.8.0'
    compile 'com.github.MAXDeliveryNG:slideview:1.0.0'

    compile 'com.facebook.fresco:fresco:1.0.1'
    compile 'com.github.bumptech.glide:glide:3.7.0'

    compile 'com.google.maps.android:android-maps-utils:0.4.4'
    compile 'com.github.jd-alexander:library:1.1.0'
}
humazed
la source
ajoutez cela à vos sous-projets projectBuild.Gradle {project.configurations.all {resolutionStrategy.eachDependency {details -> if (details.requested.group == 'com.android.support' &&! details.requested.name.contains ('multidex) ')) {details.useVersion "26. +"}}}}
Sunil Chaudhary

Réponses:

906

Vous pouvez résoudre ce problème avec l'une des solutions suivantes:

Mise à jour:

À partir d'Android studio 3.0, cela devient beaucoup plus facile car il affiche maintenant un indice plus utile, nous n'avons donc qu'à suivre cet indice.
par exemple: 1]

Toutes les bibliothèques com.android.support doivent utiliser exactement la même spécification de version (le mélange de versions peut entraîner des plantages d'exécution). Trouvé les versions 27.0.2, 26.1.0. Les exemples incluent com.android.support:animated-vector-drawable:27.0.2 et com.android.support:customtabs:26.1.0

il existe des combinaisons de bibliothèques, ou d'outils et de bibliothèques, qui sont incompatibles ou peuvent entraîner des bogues. Une telle incompatibilité est la compilation avec une version des bibliothèques de support Android qui n'est pas la dernière version (ou en particulier, une version inférieure à votre targetSdkVersion.)

Solution:
ajoutez explicitement la bibliothèque avec l'ancienne version mais avec un nouveau numéro de version.
dans mon cas com.android.support:customtabs:26.1.0, je dois donc ajouter:

implementation "com.android.support:customtabs:27.0.2"  

ie: Prenez la bibliothèque du deuxième élément et implémentez-la avec le numéro de version du premier.

Remarque: n'oubliez pas d'appuyer sur sync maintenant pour que gradle puisse reconstruire le graphique des dépendances et voir s'il y a plus de conflits.

Explication:
vous pouvez être confus par le message d'erreur car n'utilisez pas customtabsalors comment j'ai un conflit !!
eh bien .. vous ne l'avez pas utilisé directement mais une de vos bibliothèques utilise une ancienne version de customtabsinterne, vous devez donc la demander directement.

si vous êtes curieux de savoir laquelle de vos bibliothèques est responsable de l'ancienne version et que vous demandez peut-être à l'auteur de mettre à jour sa bibliothèque, exécutez un rapport de dépendance Gradle, consultez l'ancienne réponse pour savoir comment.

Notez ceci


Ancienne réponse:

inspiré par la réponse de CommonsWare :

Exécutez un rapport de dépendance Gradle pour voir votre arborescence complète des dépendances.

À partir de là, vous verrez laquelle de vos bibliothèques demande une version différente des bibliothèques de support Android. Pour tout ce qu'il demande, vous pouvez le demander directement avec la version 25.2.0 ou utiliser les autres approches de résolution de conflits de Gradle pour obtenir les mêmes versions.


Mise à jour:

Depuis la version du plugin gradle: 3.0 compilea été remplacé par implementationou apivoyez cette réponse pour la différence.

utilisez donc à la place:

./gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

ou pour windows cmd:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

et recherchez la version en conflit.

Pour moi, l'erreur a disparu après la suppression com.google.android.gms:play-services:10.2.0

Et n'incluez com.google.android.gms:play-services-location:10.2.0et com.google.android.gms:play-services-maps:10.2.0comme ce sont les deux seuls services de jeu que j'utilise.

Je pense que cela gms:play-servicesdépend de certains anciens composants de la bibliothèque de support, nous devons donc les ajouter explicitement nous-mêmes.


pour AS 3.0 un plus ancien.

Courir:

./gradlew -q dependencies <module-name>:dependencies --configuration implementation

Exemple:

./gradlew -q dependencies app:dependencies --configuration implementation

si quelqu'un connaît un meilleur moyen dans le nouveau plugin gradle, faites le moi savoir.

humazed
la source
3
com.google.android.gms:play-services:10.2.0prend en charge le SDK 14 et supérieur, si vous souhaitez utiliser ci-dessous le SDK 14, vous devez utiliser la version 10.0.1mentionnée dans stackoverflow.com/a/42315590/6248491
Sneh Pandya
2
@humazed noob question, où dois-je exécuter la commande dans Android Studio?
Haikal Nashuha
1
dans le terminal, mais d'abord, essayez d'essayer les services de jeu
humazed
1
Suis-je le seul à penser que c'est de la folie? Je veux juste admob et facebook, et ils refusent de travailler ensemble ....
Jay
3
Il peut être utile de souligner que le examples includetexte du message d'erreur montre des exemples réels de votre propre projet et non de vagues exemples généraux du type de problème. Prenez la bibliothèque du deuxième élément et implémentez-la avec le numéro de version du premier.
Benjamin Kershner
203
  1. Accédez au project/.idea/librariesdossier de votre système de fichiers et voyez quelles bibliothèques sont différentes.
  2. Vous devrez inclure manuellement ces bibliothèques avec la même version dans votre build.gradlefichier.
  3. Ensuite, synchronisez votre projet.

Par exemple:

compile 'com.android.support:appcompat-v7:25.2.0'

// Wrong library version found on 1st point
compile 'com.android.support:customtabs:25.2.0'
João Paulo Paiva
la source
Bon point. Je n'ai jamais pensé à regarder lequel était en fait le mauvais. : S Merci!
Tobias Reich
fonctionne quand la méthode de résolution automatique gradle ne fonctionne pas, merci
Odaym
10
dans / Fichiers de projet / Mon projet / .idea / bibliothèques, il existe plusieurs fichiers de support avec une version différente. Maintenant, comment pourrais-je savoir quel module ou dépendance utilise cela?
Satpal Yadav
2
@SatpalYadav J'ai recherché la version ne correspondant pas à la plus récente disponible (j'utilise dans mon application). Par exemple, j'utilise support: design: 25.3.1 mais material-dialogs utilise support-v13: 25.1.1. J'ai donc ajouté support-v13: 25.3.1 et l'erreur disparaît.
hardysim
1
C'est la meilleure solution pour moi jusqu'à présent, mais comment puis-je remplacer les nouvelles bibliothèques?
Mateusz Kaflowski
149

Pour tous les cas, pas seulement pour ces versions ou bibliothèques:

Faites attention à la petite fenêtre d'information qui dit quelque chose sur l'erreur, elle indique les exemples que vous devez modifier et ajouter .

Dans ce cas:

Trouvé les versions 25.1.1, 24.0.0. Les exemples incluent com.android.support:animated-vector-drawable:25.1.1 et com.android.support:mediarouter-v7:24.0.0

Votre

com.android.support:animated-vector-drawable:25.1.1

est la version 25.1.1 , et votre

com.android.support:mediarouter-v7:24.0.0

est la version 24.0.0 , vous devez donc ajouter le mediarouter avec la même version:

com.android.support:mediarouter-v7:25.1.1

Et faites cela pour chaque exemple que la petite fenêtre d'information indique, dans ce cas toutes les bibliothèques qui n'ont pas la version 25.1.1.

Vous devez synchroniser le gradle après avoir corrigé la bibliothèque indiquée pour voir la bibliothèque et le package suivants que vous devez modifier.

IMPORTANT:

Si vous n'utilisez pas explicitement une ou plusieurs bibliothèques spécifiées et que cela vous donne l'erreur, cela signifie qu'elle est utilisée en interne par une autre bibliothèque, compilez-la de toute façon explicitement.

Vous pouvez également utiliser une autre méthode pour voir la différence des versions de toutes les bibliothèques que vous êtes en train de compiler (comme exécuter un rapport de dépendance gradle ou aller dans vos fichiers de bibliothèques), le véritable objectif est de compiler toutes les bibliothèques que vous utilisez avec la même version .

Brandon Zamudio
la source
1
merci beaucoup, pouvez-vous s'il vous plaît expliquer ce support:mediarouterque fait exactement?
mrid
1
Je pense que c'est quelque chose que vous avez souligné et que la plupart d'entre nous ont négligé. Et ie- "Faites attention à la petite fenêtre d'information qui dit quelque chose sur l'erreur ....". Merci, cela me permet maintenant de mieux comprendre ce qui se passe réellement.
Yo Apps
103

La meilleure façon de résoudre le problème est d'implémenter tous les 'com.android.support: ...' suggérés par Android Studio

(Peu importe les versions de support que vous utilisez - 27.1.1, 28.0.0 etc.)

Placez le curseur sur la ligne d'erreur, par exemple

implementation 'com.android.support:appcompat-v7:28.0.0'

Android Studio vous proposera quelle «com.android.support: ...» est une version différente de «com.android.support:appcompat-v7:28.0.0»

Exemple

Toutes les bibliothèques com.android.support doivent utiliser exactement la même spécification de version (le mélange de versions peut entraîner des plantages d'exécution). Version 28.0.0, 27.1.0, 27.0.2 trouvée. Les exemples incluent com.android.support:animated-vector-drawable:28.0.0 et com.android.support:exifinterface:27.1.0

Alors ajoutez com.android.support:animated-vector-drawable:28.0.0 & com.android.support:exifinterface:28.0.0. Maintenant, synchronisez le fichier gradle.

Un par un, essayez d'implémenter tous les «com.android.support: ...» suggérés jusqu'à ce qu'il n'y ait pas d'erreur dans cette ligne implementation 'com.android.support:appcompat-v7:28.0.0'

Dans mon cas, j'ai ajouté

implementation 'com.android.support:appcompat-v7:28.0.0'

implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:customtabs:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'

Toutes ces dépendances, cela pourrait être différent pour vous.

Adarsh ​​Vijayan P
la source
j'ai ajouté manuellement à la fois "implémentation 'com.android.support:animated-vector-drawable:28.0.0'" et "implémentation 'com.android.support:support-media-compat:28.0.0'" mais l '"implémentation" com.android.support:appcompat-v7:28.0.0 '"est toujours souligné en rouge
AAEM
@AAEM si vous placez le curseur sur la ligne d'erreur, il montrera quelles sont les dépendances que vous devez ajouter ensuite. Veuillez ajouter toutes les dépendances à la même version et synchroniser le fichier gradle. S'il affiche à nouveau une erreur, suivez à nouveau les étapes jusqu'à ce qu'il n'y ait pas d'erreur.
Adarsh ​​Vijayan P
100

Ajoutez ceci à la toute fin de votre build.gradle (Module: app):

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '25.3.1'
        }
     }

   }
}

Assurez-vous que vous remplacez '25 .3.1 'par la version de la bibliothèque de support Android que vous souhaitez utiliser pour toutes les dépendances, elle ne doit pas être inférieure à votre version SDK complile

que re synchroniser gradle

ezzou
la source
3
C'est ce dont j'avais besoin, une de mes dépendances tirait en quelque sorte dans 27.0.1, même lorsque je spécifiais une version inférieure au niveau supérieur. Par curiosité, pourquoi excluez-vous le "multidex"?
Ray
4
Cela m'a sauvé la journée. Mais ce développement android devient de plus en plus fragmenté à chaque passage. Les gens doivent vérifier parfaitement chaque bibliothèque de support avant de la déployer. Nous n'avons pas toujours le luxe de passer par chaque nouvelle version de support, car nous voulons nous concentrer sur la construction de nos produits plutôt que de passer par tout cela. C'est toujours frustrant
larrytech
1
@ThinkTwiceCodeOnce Vous pouvez aller ici pour en savoir plus sur groovy et ses plugins inteliji
ezzou
1
Vous êtes un homme qui sauve des vies. Cela devrait être voté plusieurs fois!
imin
1
cela devrait être la solution ... a voté
Ast
54

J'ai eu exactement le même problème après la mise à jour vers Android Studio 2.3

L'ajout de cette ligne aux dépendances a résolu mon problème:

compile 'com.android.support:customtabs:25.2.0'
Berat Baran Cevik
la source
2
J'ai eu exactement le même problème après la mise à jour vers Android Studio 2.3
Plugie
1
Pour toute personne utilisant RenderScript, j'ai défini renderscriptSupportModeEnabled falsece paramètre sur false. Et la compilation 'com.android.support:customtabs:25.2.0'et l'erreur ont disparu.
Loi Gimenez
1
@LawGimenez Et comment devrions-nous utiliser le rendu de texte si nous le désactivons?
dor506
3
on dirait que mon problème vient aussi du rendu, mais que faire si j'ai besoin d'un rendu pour autre chose, pas pour des onglets personnalisés?
HendraWD
46

A) Exécutez gradle dependenciesou./gradlew dependencies

B) Examinez votre arborescence et déterminez laquelle de vos dépendances spécifie une version de bibliothèque de support différente pour une dépendance que vous ne contrôlez pas.

Je ne savais pas que cet avertissement s'affiche également si la dépendance n'est pas complètement utilisée directement par votre propre code. Dans mon cas, Facebook spécifie certaines bibliothèques de support que je n'utilisais pas, vous pouvez voir ci-dessous que la plupart de ces dépendances ont été remplacées par ma propre spécification de 25.2.0, indiquée par les symboles -> XXX (*) . La vue de la carte et les bibliothèques d'onglets personnalisés n'ont été remplacées par personne, donc je dois demander 25.2.0 pour celles-ci moi-même, même si je ne les utilise pas.

+--- com.facebook.android:facebook-android-sdk:4.17.0
|    +--- com.android.support:support-v4:25.0.0 -> 25.2.0 (*)
|    +--- com.android.support:appcompat-v7:25.0.0 -> 25.2.0 (*)
|    +--- com.android.support:cardview-v7:25.0.0
|    |    \--- com.android.support:support-annotations:25.0.0 -> 25.2.0
|    +--- com.android.support:customtabs:25.0.0
|    |    +--- com.android.support:support-compat:25.0.0 -> 25.2.0 (*)
|    |    \--- com.android.support:support-annotations:25.0.0 -> 25.2.0
|    \--- com.parse.bolts:bolts-android:1.4.0 (*)

Si gradle vous a déjà prévenu et vous a donné des exemples ...

Les exemples incluent com.android.support:animated-vector-drawable:25.1.1 et com.android.support:mediarouter-v7:24.0.0

... c'est encore plus facile si vous ajoutez des surlignages grep pour la version inférieure car cela gradle dependenciespeut être assez verbeux:

./gradlew dependencies | grep --color -E 'com.android.support:mediarouter-v7|$'
Daniel Wilson
la source
1
D'après votre explication, je comprends que XXX -> YYY (*) signifie que XXX est remplacé par YYY, c'est bon à savoir
Mercure
Littéralement la seule réponse valable.
stef
32

Utiliser des variables : Faire quelque chose comme ce qui suit vous permettra de vous assurer que vous utilisez la même version avec toutes les bibliothèques

dependencies {

    ext {
        support_library_version = '25.2.0'
        google_play_services_version = '10.2.0'
    }

    //#####################################################################
    //          Support Library
    //#####################################################################
    compile "com.android.support:appcompat-v7:${support_library_version}"
    compile "com.android.support:palette-v7:${support_library_version}"
    compile "com.android.support:design:${support_library_version}"

    //#####################################################################
    //          Google Play Services
    //#####################################################################
    compile "com.google.android.gms:play-services-auth:${google_play_services_version}"
    compile "com.google.android.gms:play-services-ads:${google_play_services_version}"
    compile "com.google.android.gms:play-services-analytics:${google_play_services_version}"

    //#####################################################################
    //          Firebase
    //#####################################################################
    compile "com.google.firebase:firebase-core:${google_play_services_version}"
    compile "com.google.firebase:firebase-auth:${google_play_services_version}"
    compile "com.google.firebase:firebase-messaging:${google_play_services_version}"

Plus d'informations sur la façon dont Google suggère de gérer ce contrôle de version sont disponibles dans cet article: https://developer.android.com/studio/build/index.html#top-level

Daniel F
la source
merci Cher Daniel F, je pense que c'est la meilleure façon d'éviter le problème de mixage de version.
Hovanes Mosoyan
2
Une seule note s'il vous plaît: Comme suggéré dans le lien ci-dessus, nous devons définir ce type de variables dans le FICHIER DE GRADLE DE NIVEAU SUPÉRIEUR merci encore)
Hovanes Mosoyan
25

ajoutez simplement ceci:

compile 'com.android.support:mediarouter-v7:25.2.0'

Updated pour les nouvelles versions du SDK

compile 'com.android.support:mediarouter-v7:28.0.0-alpha3'
Mohsen mokhtari
la source
Cela ne résout pas le problème que l'ancienne bibliothèque contient l'ancien SDK.
CoolMind
19

Si la même erreur est activée appcompat

implementation 'com.android.support:appcompat-v7:27.0.1'

puis l'ajout designrésolu.

implementation 'com.android.support:appcompat-v7:27.0.1'
implementation 'com.android.support:design:27.0.1'

Pour moi, ajouter

implementation 'de.mrmaffen:vlc-android-sdk:2.0.6'

incluait appcompat-v7:23.1.1dans

.idea / bibliothèques

sans vlc, appcompatseul suffit.

Prabs
la source
Merci beaucoup, cela a fonctionné, mais quel est le rôle de 'com.android.support:design:27.0.1'
Wessam El Mahdy
19

Comme vous l'avez déjà vu toutes les réponses et commentaires ci-dessus, mais cette réponse consiste à effacer quelque chose qu'un nouveau développeur pourrait ne pas obtenir facilement.

./gradlew -q dependencies app: dépendances --configuration compile

La ligne ci-dessus vous sauvera la vie sans aucun doute, mais comment obtenir le point exact du résultat de la ligne ci-dessus.

Lorsque vous obtenez le graphique ou la liste de toutes les dépendances à partir de la commande ci-dessus, vous devez rechercher le numéro de version en conflit que vous obtenez dans votre code. veuillez voir l'image ci-dessous.

entrez la description de l'image ici

dans l'image ci-dessus, vous pouvez voir que 23.4.0 crée le problème mais cela nous ne pouvons pas trouver dans notre fichier gradle. Alors maintenant, ce numéro de version (23.4.0) va nous sauver. Lorsque nous aurons ce numéro, nous le trouverons dans le résultat du résultat de la commande ci-dessus et importons directement cette dépendance directement dans notre fichier gradle. Veuillez voir l'image ci-dessous pour obtenir une vue claire.

vous pouvez clairement voir que com.android.support:cardview-v7:23.4.0 et com.android.support:customtabs:23.4.0 utilisent la version qui crée le problème. Maintenant, copiez simplement ces lignes à partir de la liste des dépendances et utilisez-les explicitement dans notre fichier gradle mais avec le lien de version mis à jour

implémentation "com.android.support:cardview-v7:26.1.0" implémentation "com.android.support:customtabs:26.1.0"

anoopbryan2
la source
1
Je vous remercie! Avec les nouvelles versions d'Android Studio, il devrait être mis en œuvre au lieu de compiler
Avi Parshan
Oui, vous avez raison @AviParshan, nous pouvons utiliser la compilation ou l'api. Les dépendances apparaissant dans les configurations api seront transitoirement exposées aux consommateurs de la bibliothèque, et en tant que telles apparaîtront sur le chemin de classe de compilation des consommateurs. Les dépendances trouvées dans la configuration d'implémentation, en revanche, ne seront pas exposées aux consommateurs, et par conséquent ne fuiront pas dans le chemin de classe de compilation des consommateurs.
anoopbryan2
utiliser l'application de dépendances ./gradlew -q: dépendances
Sumit
15

Une autre façon de résoudre les conflits consiste simplement à forcer la version correcte pour toutes les dépendances comme celle-ci:

dependencies {
            configurations.all {
                resolutionStrategy.eachDependency { DependencyResolveDetails details ->
                    if (details.requested.group == 'com.android.support' && details.requested.name == 'support-v4') {
                        details.useVersion "27.0.2"
                    }
                }
    ...
    }

https://docs.gradle.org/current/userguide/customizing_dependency_resolution_behavior.html

Gainder
la source
Les règles de résolution des dépendances sont difficiles à maintenir. Ils doivent être maintenus manuellement pour le numéro de version et tout changement dans les bibliothèques de support implémentées. Par exemple, Android Studio met en évidence les nouvelles versions de bibliothèque disponibles, mais n'interprète pas ces règles.
Manuel
12

Utilisez support-v13 au lieu de support-v4

compile 'com.android.support:support-v13:25.2.0'
Mehmet Hanoğlu
la source
Je reçois un problème avec ceci: compilez 'com.android.support:recyclerview-v7:25.2.0'
Crime_Master_GoGo
Exactement la même erreur que ci-dessus: -> toutes les bibliothèques com.android.support doivent utiliser exactement la même spécification de version Recyclerview
Crime_Master_GoGo
@Googli, veuillez écrire compileSdkVersion , buildToolsVersion et les dépendances que j'ai utilisées. Pas de problèmecompile 'com.android.support:appcompat-v7:25.2.0' compile 'com.android.support:design:25.2.0' compile 'com.android.support:support-v13:25.2.0' compile 'com.android.support:recyclerview-v7:25.2.0'
Mehmet Hanoğlu
12

ajoutez-les dans les dépendances au niveau de l'application

implementation 'com.android.support:asynclayoutinflater:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
Mohammad Maaz
la source
9

Mon problème est similaire au vôtre. Voici une erreur!

compile 'com.android.support:appcompat-v7:25.3.0'

Toutes les bibliothèques com.android.support doivent utiliser exactement la même spécification de version (le mélange de versions peut entraîner des plantages d'exécution). Trouvé les versions 25.3.0, 24.0.0. Les exemples incluent «com.android.support:animated-vector-drawable:25.3.0» et «com.android.support:mediarouter-v7:24.0.0»

Voir ces exemples incluent 'com.android.support:animated-vector-drawable:25.3.0' et 'com.android.support:mediarouter-v7:24.0.0'

ajoutez simplement ces codes dans les dépendances, assurez-vous que les versions sont les mêmes.

compile 'com.android.support:animated-vector-drawable:25.3.0'
compile 'com.android.support:mediarouter-v7:25.3.0'
Yanbin Hu
la source
9

J'ai eu la même erreur après l'ajout compile 'com.google.android.gms:play-services:10.2.4'avec la compilation 'com.android.support:appcompat-v7:25.3.1'.

Ajout animated-vector-drawableet mediarouter libscorrection du problème.

compile 'com.google.android.gms:play-services:10.2.4'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:animated-vector-drawable:25.3.1'
compile 'com.android.support:mediarouter-v7:25.3.1'
Sandeep
la source
9

J'avais ceci:

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
   implementation 'com.android.support:support-v4:27.1.1'
   implementation 'com.google.firebase:firebase-auth:12.0.1'
   implementation 'com.google.firebase:firebase-firestore:12.0.1'
   implementation 'com.google.firebase:firebase-messaging:12.0.1'
   implementation 'com.google.android.gms:play-services-auth:12.0.1'
   implementation'com.facebook.android:facebook-login:[4,5)'
   implementation 'com.twitter.sdk.android:twitter:3.1.1'
   implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
   implementation 'org.jetbrains:annotations-java5:15.0'
   implementation project(':vehiclesapi')
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.1'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

et a obtenu cette erreur: entrez la description de l'image ici

Les solutions étaient faciles - les dépendances principales étaient toutes correctes, donc les feuilles restent - toutes les dépendances tierces. Supprimé un par un jusqu'à trouver le coupable, et se révèle être Facebook! son utilisation de la version 27.0.2 des bibliothèques de support Android. J'ai essayé d'ajouter la version 27.1.1 de cardview, mais cela ne fonctionnait pas, la solution était encore assez simple.

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
   implementation 'com.android.support:support-v4:27.1.1'
   implementation 'com.google.firebase:firebase-auth:12.0.1'
   implementation 'com.google.firebase:firebase-firestore:12.0.1'
   implementation 'com.google.firebase:firebase-messaging:12.0.1'
   implementation 'com.google.android.gms:play-services-auth:12.0.1'
   implementation('com.facebook.android:facebook-login:[4,5)'){
       // contains com.android.support:v7:27.0.2, included required com.android.support.*:27.1.1 modules
    exclude group: 'com.android.support'
   }
   implementation 'com.android.support:cardview-v7:27.1.1' // to replace facebook sdk's cardview-v7:27.0.2.
   implementation 'com.twitter.sdk.android:twitter:3.1.1'
   implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
   implementation 'org.jetbrains:annotations-java5:15.0'
   implementation project(':vehiclesapi')
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.1'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
Sagar Patel
la source
9

J'ai rencontré ce problème après la mise à niveau vers Android Studio 3.4 et la version SDK vers 28.0.0. L'application de la dépendance ci-dessous a résolu le problème pour moi.

    implementation 'com.android.support:exifinterface:28.0.0'
Shaon
la source
8

J'ai utilisé ces deux pour résoudre mon problème après la mise à niveau vers Android Studio 2.3

compile 'com.android.support:animated-vector-drawable:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'
Aparajita Sinha
la source
8

J'ai eu le même problème avant et j'ai trouvé la solution.

Je viens d'ajouter les bibliothèques qui avaient une autre version mais avec la même version de mon support:appcompat.

Pour votre erreur par exemple:

Toutes les bibliothèques com.android.support doivent utiliser exactement la même spécification de version (le mélange de versions peut entraîner des plantages d'exécution). Trouvé les versions 25.1.1, 24.0.0. Les exemples incluent com.android.support:animated-vector-drawable:25.1.1 et com.android.support:mediarouter-v7:24.0.0

* La solution est de compiler les versions de ces bibliothèques comme ça:

compile 'com.android.support:mediarouter-v7:25.1.1'

-si une autre bibliothèque avait le même problème et avait une autre version, il suffit de la compiler avec votre support:appcompatversion

Cela a résolu mon problème et j'espère qu'il résoudra le vôtre.

Meilleurs vœux :)

Hesham Morsy
la source
8

Après avoir recherché et combiné les réponses, la version 2018 de cette question et cela a fonctionné pour moi:

1) Dans l'onglet de navigation, changez-le en vue de projet

2) Accédez à [YourProjectName] /. Idea / bibliothèques /

3) Supprimez tous les fichiers commençant par Gradle__com_android_support_ [libraryName]

Par exemple: Gradle__com_android_support_animated_vector_drawable_26_0_0.xml

4) Dans votre fichier gradle, définissez une variable et utilisez-la pour remplacer le numéro de version comme $ {variableName}

Variable Def:

ext {
    support_library_version = '28.0.0' //use the version of choice
}

Utiliser une variable:

implementation "com.android.support:cardview-v7:${support_library_version}"

exemple gradle:

dependencies {
    ext {
        support_library_version = '28.0.0' //use the version of choice
    }

    implementation fileTree(include: ['*.jar'], dir: 'libs')

    implementation "com.android.support:animated-vector-drawable:${support_library_version}"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:customtabs:${support_library_version}"
    implementation "com.android.support:cardview-v7:${support_library_version}"
    implementation "com.android.support:support-compat:${support_library_version}"
    implementation "com.android.support:support-v4:${support_library_version}"
    implementation "com.android.support:support-core-utils:${support_library_version}"
    implementation "com.android.support:support-core-ui:${support_library_version}"
    implementation "com.android.support:support-fragment:${support_library_version}"
    implementation "com.android.support:support-media-compat:${support_library_version}"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:recyclerview-v7:${support_library_version}"
    implementation "com.android.support:design:${support_library_version}"

}
Ali Karaca
la source
1
Cette réponse a besoin de plus d'explications. Un lecteur pourrait être amené à croire qu'il devrait copier-coller l'intégralité de votre fichier Gradle dans son projet. Vous devez expliquer pourquoi vous avez ajouté l'extension et pourquoi vous définissez certaines bibliothèques de support sur la version gplaysvcs, d'autres sur la version supportlib et certaines sont inchangées.
jungledev
8

Très simple avec la nouvelle version du studio android 3.x.

Copiez simplement la version inférieure à la version actuelle et ajoutez-la explicitement avec le même numéro de version que la version actuelle.

Exemple

Trouvé les versions 27.1.1, 27.1.0. Les exemples incluent com.android.support:animated-vector-drawable:27.1.1 et com.android.support:exifinterface:27.1.0

Copiez simplement la version com.android.support:exifinterface:27.1.0et changez-la pour com.android.support:exifinterface:27.1.1qu'elle devienne égale à la version actuelle que vous utilisez et ajoutez-la à vos dépendances Gradle comme suit.

implementation 'com.android.support:exifinterface:27.1.1'

Remarque: Une fois que vous avez terminé, n'oubliez pas de cliquer sur Synchroniser maintenant en haut de l'éditeur.

Muhammad
la source
7

en 2018 mise à jour pour cette erreur ajouter l'implémentation de la structure du projet

implementation 'com.android.support:support-v13:28.0.0'

en mode projet -> Bibliothèques externes , vous pouvez trouver votre problème, dans mon cas, j'utilise la version 28 et les bibliothèques externes que j'ai trouvées com.android.support:support-media-compat-26.0.0et voici l'erreur.

après la mise en œuvre support v13et ça marche

Alwayss Bijoy
la source
Le soulignement rouge a disparu avec cette implémentation.
Truong Hieu
6

Vous avez défini toute autre dépendance à compiler avec la version 24.0.0au lieu de 25.1.1. Veuillez définir toutes les versions de dépendances de la même manière que 25.1.1.

Sneh Pandya
la source
J'ai mis à jour ma réponse toutes les versions de support ont la même version 25.1.1
humazed
6

J'ai dû ajouter les lignes suivantes en gradle pour supprimer l'erreur

compile 'com.android.support:animated-vector-drawable:25.2.0'
compile 'com.android.support:preference-v7:25.2.0'
compile 'com.android.support:customtabs:25.2.0'
compile 'com.android.support:cardview-v7:25.2.0'
Shrikant
la source
6

J'ai exécuté les tâches ./gradlew --all et vérifié les dépendances qui étaient une version différente de la version ciblée (25.3.1). Vous obtiendrez quelque chose comme ceci:

app:prepareComAndroidSupportAnimatedVectorDrawable2531Library - Prepare com.android.support:animated-vector-drawable:25.3.1
app:prepareComAndroidSupportAppcompatV72531Library - Prepare com.android.support:appcompat-v7:25.3.1
app:prepareComAndroidSupportCardviewV72531Library - Prepare com.android.support:cardview-v7:25.3.1
app:prepareComAndroidSupportCustomtabs2531Library - Prepare com.android.support:customtabs:25.3.1
app:prepareComAndroidSupportDesign2531Library - Prepare com.android.support:design:25.3.1
app:prepareComAndroidSupportMediarouterV72531Library - Prepare com.android.support:mediarouter-v7:25.3.1
app:prepareComAndroidSupportPaletteV72531Library - Prepare com.android.support:palette-v7:25.3.1
app:prepareComAndroidSupportRecyclerviewV72531Library - Prepare com.android.support:recyclerview-v7:25.3.1
app:prepareComAndroidSupportSupportCompat2531Library - Prepare com.android.support:support-compat:25.3.1
app:prepareComAndroidSupportSupportCoreUi2531Library - Prepare com.android.support:support-core-ui:25.3.1
app:prepareComAndroidSupportSupportCoreUtils2531Library - Prepare com.android.support:support-core-utils:25.3.1
app:prepareComAndroidSupportSupportFragment2531Library - Prepare com.android.support:support-fragment:25.3.1
app:prepareComAndroidSupportSupportMediaCompat2531Library - Prepare com.android.support:support-media-compat:25.3.1
app:prepareComAndroidSupportSupportV42531Library - Prepare com.android.support:support-v4:25.3.1
app:prepareComAndroidSupportSupportVectorDrawable2531Library - Prepare com.android.support:support-vector-drawable:25.3.1
app:prepareComAndroidSupportTransition2531Library - Prepare com.android.support:transition:25.3.1
app:prepareComAndroidVolleyVolley100Library - Prepare com.android.volley:volley:1.0.0
app:prepareComCrashlyticsSdkAndroidAnswers1312Library - Prepare com.crashlytics.sdk.android:answers:1.3.12
app:prepareComCrashlyticsSdkAndroidBeta124Library - Prepare com.crashlytics.sdk.android:beta:1.2.4
app:prepareComCrashlyticsSdkAndroidCrashlytics267Library - Prepare com.crashlytics.sdk.android:crashlytics:2.6.7
app:prepareComCrashlyticsSdkAndroidCrashlyticsCore2316Library - Prepare com.crashlytics.sdk.android:crashlytics-core:2.3.16
app:prepareComFacebookAndroidFacebookAndroidSdk4161Library - Prepare com.facebook.android:facebook-android-sdk:4.16.1
app:prepareComGoogleAndroidGmsPlayServicesAnalytics1026Library - Prepare com.google.android.gms:play-services-analytics:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAnalyticsImpl1026Library - Prepare com.google.android.gms:play-services-analytics-impl:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAuth1026Library - Prepare com.google.android.gms:play-services-auth:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAuthBase1026Library - Prepare com.google.android.gms:play-services-auth-base:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesBase1026Library - Prepare com.google.android.gms:play-services-base:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesBasement1026Library - Prepare com.google.android.gms:play-services-basement:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesCast1026Library - Prepare com.google.android.gms:play-services-cast:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesLocation1026Library - Prepare com.google.android.gms:play-services-location:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesMaps1026Library - Prepare com.google.android.gms:play-services-maps:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesTagmanagerV4Impl1026Library - Prepare com.google.android.gms:play-services-tagmanager-v4-impl:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesTasks1026Library - Prepare com.google.android.gms:play-services-tasks:10.2.6
app:prepareComGoogleFirebaseFirebaseAnalytics1026Library - Prepare com.google.firebase:firebase-analytics:10.2.6
app:prepareComGoogleFirebaseFirebaseAnalyticsImpl1026Library - Prepare com.google.firebase:firebase-analytics-impl:10.2.6
app:prepareComGoogleFirebaseFirebaseAppindexing1024Library - Prepare com.google.firebase:firebase-appindexing:10.2.4
app:prepareComGoogleFirebaseFirebaseCommon1026Library - Prepare com.google.firebase:firebase-common:10.2.6
app:prepareComGoogleFirebaseFirebaseCore1026Library - Prepare com.google.firebase:firebase-core:10.2.6
app:prepareComGoogleFirebaseFirebaseIid1026Library - Prepare com.google.firebase:firebase-iid:10.2.6
app:prepareComGoogleFirebaseFirebaseMessaging1026Library - Prepare com.google.firebase:firebase-messaging:10.2.6
app:prepareComMindorksPlaceholderview027Library - Prepare com.mindorks:placeholderview:0.2.7
app:prepareDebugAndroidTestDependencies
app:prepareDebugDependencies
app:prepareDebugUnitTestDependencies
app:prepareInfoHoang8fAndroidSegmented105Library - Prepare info.hoang8f:android-segmented:1.0.5
app:prepareIoFabricSdkAndroidFabric1316Library - Prepare io.fabric.sdk.android:fabric:1.3.16
app:prepareNoNordicsemiAndroidLog211Library - Prepare no.nordicsemi.android:log:2.1.1
app:prepareNoNordicsemiAndroidSupportV18Scanner100Library - Prepare no.nordicsemi.android.support.v18:scanner:1.0.0

Dans ce cas, je visais la 25.3.1 et j'avais des dépendances ciblant différentes versions lorsque j'ai exécuté cette commande. L'astuce consiste à identifier les dépendances de cette liste qui ciblent les versions précédentes et à les remplacer en important la version la plus récente de la dépendance dans Gradle.

Matt W
la source
6

J'ai le même problème mais je l'ai résolu en ajoutant ces trois lignes

implementation 'com.android.support:design:27.1.1'
implementation "com.android.support:customtabs:27.1.1"
implementation 'com.android.support:mediarouter-v7:27.1.1'

maintenant tout fonctionne parfaitement

Hamza Rahman
la source
6

Voici mon flux pour corriger cet avertissement

build.gradle

android {
    compileSdkVersion ... // must same version (ex: 26)
    ...
}

dependencies {
    ...
    compile 'any com.android.support... library'  // must same version (ex: 26.0.1)
    compile 'any com.android.support... library'  // must same version (ex: 26.0.1)

    ...
    compile ('a library B which don't use 'com.android.support...' OR use SAME version of 'com.android.support'){
         // do nothing 
    }

    ...
    compile ('a library C which use DIFFERENT 'com.android.support...' (ex:27.0.1) { 
        // By default, if use don't do anything here your app will choose the higher com.android.support... for whole project (in this case it is 27.0.1)

        // If you want to use 26.0.1 use
        exclude group: 'com.android.support', module: '...' (ex module: 'appcompat-v7') 
        exclude group: 'com.android.support', module: 'another module'
        ...

        // If you want to use 27.0.1 do 
        Upgrade `compileSdkVersion` and all 'com.android.support' to 27.0.1.
        (It may be a good solution because the best practice is always use latest `compileSdkVersion`.  
        However, use 26 or 27 is base on you for example higher library may have bug)
    }
}

Pour afficher / vérifier dependenciestoutes les bibliothèques de votre application
Ouvrez le terminal et exécutez./gradlew app:dependencies

Pour afficher la dependenciesbibliothèque spécifique de votre application, suivez le didacticiel ici: - Comment exclure les dépendances d'une dépendance particulière dans Gradle

J'espère que ça aide

Phan Van Linh
la source
5

Ouvrez la bibliothèque externe de votre projet, vous verrez que certaines bibliothèques utilisent toujours la version précédente bien que vous n'ayez pas mentionné ces bibliothèques, donc ma suggestion est simplement d'utiliser la version de bibliothèque particulière pour celles qui résoudront votre problème.

Subho
la source
5

Je viens de mettre à jour mon référentiel de support Android vers (révision: 44.0.0); puis les outils Android SDK et l'émulateur vers la dernière version 25.3.1 du gestionnaire sdk> Outils SDK Et cela a résolu mon problème.

Ajit Thapa
la source