Alle com.android.support-Bibliotheken müssen genau dieselbe Versionsspezifikation verwenden

788

Nach dem Update auf Android Studio 2.3 habe ich diese Fehlermeldung erhalten. Ich weiß, es ist nur ein Hinweis, da die App normal läuft, aber es ist wirklich seltsam.

Alle com.android.support-Bibliotheken müssen genau dieselbe Versionsspezifikation verwenden (das Mischen von Versionen kann zu Laufzeitabstürzen führen). Gefundene Versionen 25.1.1, 24.0.0. Beispiele sind com.android.support:animated-vector-drawable:25.1.1 und com.android.support:mediarouter-v7:24.0.0

Geben Sie hier die Bildbeschreibung ein

mein 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
quelle
Fügen Sie dies zu Ihren projectBuild.Gradle-Unterprojekten hinzu ')) {details.useVersion "26. +"}}}}
Sunil Chaudhary

Antworten:

906

Sie können dies mit einer der folgenden Lösungen lösen:

Aktualisieren:

Ab Android Studio 3.0 wird es viel einfacher, da jetzt ein hilfreicherer Hinweis angezeigt wird, sodass wir nur diesem Hinweis folgen müssen.
zum Beispiel: 1]

Alle com.android.support-Bibliotheken müssen genau dieselbe Versionsspezifikation verwenden (das Mischen von Versionen kann zu Laufzeitabstürzen führen). Gefundene Versionen 27.0.2, 26.1.0. Beispiele sind com.android.support:animated-vector-drawable:27.0.2 und com.android.support:customtabs:26.1.0

Es gibt einige Kombinationen von Bibliotheken oder Tools und Bibliotheken, die nicht kompatibel sind oder zu Fehlern führen können. Eine solche Inkompatibilität besteht darin, mit einer Version der Android-Unterstützungsbibliotheken zu kompilieren, die nicht die neueste Version ist (oder insbesondere eine Version, die niedriger als Ihre targetSdkVersion ist).

Lösung:
Fügen Sie die Bibliothek explizit mit der alten Version, jedoch mit einer neuen Versionsnummer hinzu.
In meinem Fall muss com.android.support:customtabs:26.1.0ich also hinzufügen:

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

dh: Nehmen Sie die Bibliothek aus dem zweiten Element und implementieren Sie sie mit der Versionsnummer aus dem ersten.

Hinweis: Vergessen Sie nicht, jetzt auf "Synchronisieren" zu klicken, damit gradle das Abhängigkeitsdiagramm neu erstellen und prüfen kann, ob weitere Konflikte vorliegen.

Erläuterung:
Sie können durch die Fehlermeldung verwirrt sein, da Sie nicht verwenden customtabs, wie ich einen Konflikt habe !!
Nun, Sie haben es nicht direkt verwendet, aber eine Ihrer Bibliotheken verwendet customtabsintern eine alte Version von. Sie müssen also direkt danach fragen.

Wenn Sie neugierig sind, welche Ihrer Bibliotheken für die alte Version verantwortlich ist, und den Autor möglicherweise bitten, seine Bibliothek zu aktualisieren, einen Gradle-Abhängigkeitsbericht ausführen, lesen Sie die alte Antwort, um zu erfahren, wie.

Beachten Sie dies


Alte Antwort:

inspiriert von CommonsWare Antwort :

Führen Sie einen Gradle-Abhängigkeitsbericht aus, um zu sehen, wie Ihr vollständiger Abhängigkeitsbaum aussieht.

Von dort aus sehen Sie, welche Ihrer Bibliotheken nach einer anderen Version der Android-Support-Bibliotheken fragen. Für alles, was es verlangt, können Sie es direkt mit der 25.2.0-Version anfordern oder Gradles andere Ansätze zur Konfliktlösung verwenden, um dieselben Versionen zu erhalten.


Aktualisieren:

Ab Gradle Plugin Version: 3.0 compilewurde durch ersetzt implementationoder apisiehe diese Antwort für den Unterschied.

Verwenden Sie daher stattdessen:

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

oder für Windows cmd:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

und suchen Sie nach der Konfliktversion.

Für mich verschwand der Fehler nach dem Entfernen com.google.android.gms:play-services:10.2.0

Und nur einschließen com.google.android.gms:play-services-location:10.2.0und com.google.android.gms:play-services-maps:10.2.0da sie die einzigen zwei Spieldienste sind, die ich benutze.

Ich denke, das gms:play-serviceshängt von einigen alten Komponenten der Support-Bibliothek ab, daher müssen wir sie explizit selbst hinzufügen.


für AS 3.0 ein älteres.

Lauf:

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

Beispiel:

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

Wenn jemand einen besseren Weg im neuen Gradle-Plugin kennt, lass es mich wissen.

humazed
quelle
3
com.google.android.gms:play-services:10.2.0unterstützt SDK 14 und höher. Wenn Sie SDK 14 verwenden möchten, müssen Sie die Version verwenden 10.0.1, die unter stackoverflow.com/a/42315590/6248491
Sneh Pandya
2
@humazed noob Frage, wo führe ich den Befehl in Android Studio aus?
Haikal Nashuha
1
im Terminal, aber zuerst versuchen, die Spiel-Service-Sache zu versuchen
humazed
1
Bin ich der einzige, der das für Wahnsinn hält? Ich will nur Admob und Facebook, und sie weigern sich, zusammenzuarbeiten ...
Jay
3
Es kann hilfreich sein, darauf hinzuweisen, dass der examples includeText in der Fehlermeldung tatsächliche Beispiele aus Ihrem eigenen Projekt enthält, keine vagen allgemeinen Beispiele für die Art des Problems. Nehmen Sie die Bibliothek aus dem zweiten Element und implementieren Sie sie mit der Versionsnummer aus dem ersten.
Benjamin Kershner
203
  1. Gehen Sie zum project/.idea/librariesOrdner in Ihrem Dateisystem und sehen Sie, welche Bibliotheken unterschiedlich sind.
  2. Sie müssen diese Bibliotheken mit derselben Version manuell in Ihre build.gradleDatei aufnehmen.
  3. Synchronisieren Sie dann Ihr Projekt.

Z.B:

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
quelle
Guter Punkt. Ich habe nie darüber nachgedacht, einen Blick darauf zu werfen, welcher tatsächlich der falsche war. : S Danke!
Tobias Reich
funktioniert, wenn die automatische Auflösungsmethode von gradle nicht funktioniert, danke
Odaym
10
In / Projektdateien / Mein Projekt / .idea / Bibliotheken gibt es mehrere Unterstützungsdateien mit unterschiedlicher Version. Wie würde ich nun wissen, welches Modul oder welche Abhängigkeit dies verwendet?
Satpal Yadav
2
@SatpalYadav Ich habe nach der Version gesucht, die nicht mit der neuesten verfügbaren Version übereinstimmt (die ich in meiner App verwende). ZB verwende ich support: design: 25.3.1, aber Material-Dialoge verwenden support-v13: 25.1.1. Also habe ich support-v13: 25.3.1 hinzugefügt und der Fehler verschwindet.
Hardysim
1
Das ist die beste Lösung für mich, aber wie kann ich neuere Bibliotheken überschreiben?
Mateusz Kaflowski
149

Für alle Fälle, nicht nur für diese Versionen oder Bibliotheken:

Achten Sie auf das kleine Informationsfenster, das etwas über den Fehler aussagt. Es enthält die Beispiele, die Sie ändern und hinzufügen müssen .

In diesem Fall:

Gefundene Versionen 25.1.1, 24.0.0. Beispiele sind com.android.support:animated-vector-drawable:25.1.1 und com.android.support:mediarouter-v7:24.0.0

Ihre

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

ist Version 25.1.1 und Ihre

com.android.support:mediarouter-v7:24.0.0

ist Version 24.0.0 , daher müssen Sie den Mediarouter mit derselben Version hinzufügen:

com.android.support:mediarouter-v7:25.1.1

Und das für jedes Beispiel, das im kleinen Informationsfenster steht, in diesem Fall für alle Bibliotheken, die nicht über die Version 25.1.1 verfügen.

Sie müssen den Gradle synchronisieren, nachdem Sie die angegebene Bibliothek repariert haben, um die nächste Bibliothek und das nächste Paket anzuzeigen, die Sie ändern müssen.

WICHTIG:

Wenn Sie eine oder mehrere angegebene Bibliotheken nicht explizit verwenden und der Fehler angezeigt wird, bedeutet dies, dass sie intern von einer anderen Bibliothek verwendet werden. Kompilieren Sie sie trotzdem explizit.

Sie können auch eine andere Methode verwenden, um den Unterschied zwischen den Versionen aller Bibliotheken zu ermitteln, die Sie tatsächlich kompilieren (z. B. einen Gradle-Abhängigkeitsbericht ausführen oder zu Ihren Bibliotheksdateien wechseln ). Das eigentliche Ziel besteht darin, alle Bibliotheken zu kompilieren, mit denen Sie arbeiten die gleiche Version .

Brandon Zamudio
quelle
1
Vielen Dank, können Sie bitte erklären, was support:mediaroutergenau funktioniert?
Mrid
1
Ich denke, das ist etwas, worauf Sie hingewiesen haben, das die meisten von uns übersehen haben. Und dh- "Achten Sie auf das kleine Informationsfenster, das etwas über den Fehler aussagt ...". Vielen Dank, dies gibt mir jetzt ein besseres Verständnis dafür, was wirklich passiert.
Yo Apps
103

Der beste Weg, um das Problem zu lösen, ist die Implementierung aller von Android Studio vorgeschlagenen "com.android.support: ..."

(Egal welche Support-Versionen Sie verwenden - 27.1.1, 28.0.0 usw.)

Setzen Sie den Cursor auf die Fehlerzeile, z

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

Android Studio schlägt Ihnen vor, welche 'com.android.support: ...' eine andere Version als 'com.android.support:appcompat-v7:28.0.0' ist.

Beispiel

Alle com.android.support-Bibliotheken müssen genau dieselbe Versionsspezifikation verwenden (das Mischen von Versionen kann zu Laufzeitabstürzen führen). Gefundene Versionen 28.0.0, 27.1.0, 27.0.2. Beispiele sind com.android.support:animated-vector-drawable:28.0.0 und com.android.support:exifinterface:27.1.0

Also füge com.android.support:animated-vector-drawable:28.0.0 & hinzu com.android.support:exifinterface:28.0.0. Synchronisieren Sie nun die Gradle-Datei.

Versuchen Sie nacheinander, alle vorgeschlagenen "com.android.support: ..." zu implementieren, bis in dieser Zeile kein Fehler mehr vorliegt implementation 'com.android.support:appcompat-v7:28.0.0'

In meinem Fall habe ich hinzugefügt

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'

All diese Abhängigkeiten könnten für Sie anders sein.

Adarsh ​​Vijayan P.
quelle
Ich habe sowohl "Implementierung" com.android.support:animated-vector-drawable:28.0.0 "als auch" Implementierung "com.android.support:support-media-compat:28.0.0" manuell hinzugefügt, aber die "Implementierung". com.android.support:appcompat-v7:28.0.0 '"wird immer noch von rot unterstrichen
AAEM
@AAEM Wenn Sie den Cursor auf die Fehlerzeile setzen, werden die Abhängigkeiten angezeigt, die Sie als Nächstes hinzufügen sollten. Bitte fügen Sie alle Abhängigkeiten derselben Version hinzu und synchronisieren Sie die Gradle-Datei. Wenn erneut ein Fehler angezeigt wird, führen Sie die Schritte erneut aus, bis kein Fehler mehr vorliegt.
Adarsh ​​Vijayan P
100

Fügen Sie dies ganz am Ende Ihres build.gradle hinzu (Modul: 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'
        }
     }

   }
}

Stellen Sie sicher, dass Sie '25 .3.1 'durch die Version der Android-Unterstützungsbibliothek ersetzen, die Sie für alle Abhängigkeiten verwenden möchten. Sie sollte nicht niedriger sein als Ihre kompatible SDK-Version

als Gradle erneut synchronisieren

Ezzou
quelle
3
Dies ist, was ich brauchte, eine meiner Abhängigkeiten war irgendwie 27.0.1 zu ziehen, selbst wenn ich eine kleinere Version auf der obersten Ebene spezifizierte. Warum schließen Sie aus Neugier den "Multidex" aus?
Ray
4
Das hat mir den Tag gerettet. Aber diese Android-Entwicklung wird von Tag zu Tag stärker fragmentiert. Die Leute müssen wirklich jede Support-Bibliothek perfekt überprüfen, bevor sie sie einführen. Wir haben nicht immer den Luxus, Zeit zu haben, um jede neue Support-Version durchzuarbeiten, da wir uns darauf konzentrieren möchten, unsere Produkte zu entwickeln, anstatt all dies durchzugehen. Es ist immer frustrierend
Larrytech
1
@ThinkTwiceCodeOnce Hier können Sie mehr über groovy und seine Inteliji-Plugins erfahren
ezzou
1
Du bist ein Lebensretter. Dies sollte viele, viele Male positiv bewertet werden!
Imin
1
Dies sollte die Lösung sein ... upvoted
Ast
54

Ich hatte genau das gleiche Problem nach dem Update auf Android Studio 2.3

Das Hinzufügen dieser Zeile zu Abhängigkeiten löste mein Problem:

compile 'com.android.support:customtabs:25.2.0'
Berat Baran Cevik
quelle
2
Ich hatte genau das gleiche Problem nach dem Update auf Android Studio 2.3
Plugie
1
Für alle, die RenderScript verwenden, setze ich renderscriptSupportModeEnabled falsedies auf false. Und das Hinzufügen von Kompilieren 'com.android.support:customtabs:25.2.0'und Fehlern ging weg.
Gesetz Gimenez
1
@LawGimenez Und wie sollen wir Renderscript verwenden, wenn wir es nur deaktiviert haben?
Dor506
3
Mein Problem liegt anscheinend auch am Renderscript, aber was ist, wenn ich Renderscript für etwas anderes benötige, nicht für CustomTabs?
HendraWD
46

A) Ausführen gradle dependenciesoder./gradlew dependencies

B) Sehen Sie sich Ihren Baum an und finden Sie heraus, welche Ihrer Abhängigkeiten eine andere Version der Unterstützungsbibliothek für eine Abhängigkeit angibt, die Sie nicht kontrollieren.

Ich habe nicht bemerkt, dass diese Warnung auch angezeigt wird, wenn die Abhängigkeit direkt von Ihrem eigenen Code nicht vollständig verwendet wird. In meinem Fall gibt Facebook einige Unterstützungsbibliotheken an, die ich nicht verwendet habe. Sie können unten sehen, dass die meisten dieser Abhängigkeiten durch meine eigene Spezifikation von 25.2.0 überschrieben wurden, die durch die Symbole -> XXX (*) gekennzeichnet ist . Die Kartenansicht und die benutzerdefinierten Registerkartenbibliotheken wurden von niemandem überschrieben, daher muss ich für diese selbst nach 25.2.0 fragen, obwohl ich sie nicht verwende.

+--- 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 (*)

Wenn gradle Sie bereits gewarnt und Ihnen Beispiele gegeben hat ...

Beispiele sind com.android.support:animated-vector-drawable:25.1.1 und com.android.support:mediarouter-v7:24.0.0

... es ist noch einfacher, wenn Sie einige grep-Hervorhebungen für die niedrigere Version gradle dependencieseinfügen, da dies ziemlich ausführlich sein kann:

./gradlew dependencies | grep --color -E 'com.android.support:mediarouter-v7|$'
Daniel Wilson
quelle
1
Aus Ihrer Erklärung verstehe ich, dass XXX -> JJJ (*) bedeutet, dass XXX von JJJ überschrieben wird, das ist gut zu wissen
Merkur
Buchstäblich die einzig gültige Antwort.
stef
32

Variablen verwenden : Wenn Sie Folgendes tun, können Sie leichter sicherstellen, dass Sie für alle Bibliotheken dieselbe Version verwenden

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}"

Weitere Informationen darüber, wie Google vorschlägt, mit dieser Versionierung umzugehen, finden Sie in diesem Artikel: https://developer.android.com/studio/build/index.html#top-level

Daniel F.
quelle
danke Lieber Daniel F, ich denke, dies ist der beste Weg, um das Problem des Versionsmischens zu vermeiden.
Hovanes Mosoyan
2
Nur eine Anmerkung bitte: Wie im obigen Link vorgeschlagen, sollten wir diese Typvariablen in der TOP LEVEL GRADLE-DATEI definieren. Nochmals vielen Dank)
Hovanes Mosoyan
25

füge einfach Folgendes hinzu:

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

Updated für neue SDK-Versionen

compile 'com.android.support:mediarouter-v7:28.0.0-alpha3'
Mohsen Mokhtari
quelle
Es löst kein Problem, dass die alte Bibliothek altes SDK enthält.
CoolMind
19

Wenn der gleiche Fehler aktiviert ist appcompat

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

dann das Hinzufügen designlöste es.

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

Für mich hinzufügen

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

war appcompat-v7:23.1.1in

.idea / Bibliotheken

ohne vlc, appcompatallein ist genug.

Prabs
quelle
Vielen Dank, es hat funktioniert, aber was ist die Rolle von 'com.android.support:design:27.0.1'
Wessam El Mahdy
19

Wie Sie bereits alle Antworten und Kommentare oben gesehen haben, dient diese Antwort dazu, etwas zu löschen, das ein neuer Entwickler möglicherweise nicht leicht bekommt.

./gradlew -q Abhängigkeiten App: Abhängigkeiten --Konfiguration kompilieren

Die obige Linie wird ohne Zweifel Ihr Leben retten, aber wie Sie den genauen Punkt aus dem Ergebnis der obigen Linie erhalten.

Wenn Sie das Diagramm oder die Liste aller Abhängigkeiten aus dem obigen Befehl erhalten, müssen Sie die widersprüchliche Versionsnummer suchen, die Sie in Ihrem Code erhalten. Bitte sehen Sie das Bild unten.

Geben Sie hier die Bildbeschreibung ein

Im obigen Bild sehen Sie, dass 23.4.0 das Problem verursacht, das wir jedoch in unserer Gradle-Datei nicht finden können. Diese Versionsnummer (23.4.0) wird uns jetzt retten. Wenn wir diese Nummer haben, finden wir diese Nummer im Ergebnis des obigen Befehlsergebnisses und importieren diese Abhängigkeit direkt in unsere Gradle-Datei. Bitte sehen Sie das Bild unten, um die klare Sicht zu erhalten.

Sie können deutlich sehen, dass com.android.support:cardview-v7:23.4.0 und com.android.support:customtabs:23.4.0 die Version verwenden, die das Problem verursacht. Kopieren Sie jetzt einfach diese Zeile aus der Abhängigkeitsliste und verwenden Sie sie explizit in unserer Gradle-Datei, jedoch mit dem aktualisierten Versionslink

Implementierung "com.android.support:cardview-v7:26.1.0" Implementierung "com.android.support:customtabs:26.1.0"

anoopbryan2
quelle
1
Vielen Dank! Mit neueren Versionen von Android Studio sollte es auf die Implementierung umgestellt werden, anstatt zu kompilieren
Avi Parshan
Ja, Sie haben Recht @AviParshan wir können compile oder api verwenden. Abhängigkeiten, die in den API-Konfigurationen angezeigt werden, werden den Verbrauchern der Bibliothek transitiv ausgesetzt und als solche im Kompilierungsklassenpfad der Verbraucher angezeigt. Abhängigkeiten, die in der Implementierungskonfiguration gefunden werden, sind andererseits nicht für Verbraucher verfügbar und gelangen daher nicht in den Kompilierungsklassenpfad der Verbraucher.
anoopbryan2
verwenden ./gradlew -q Abhängigkeiten App: Abhängigkeiten --configuration Implementierung
Sumit
15

Eine andere Möglichkeit, Konflikte zu lösen, besteht darin, die richtige Version für alle Abhängigkeiten wie diese zu erzwingen:

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
quelle
Regeln zur Auflösung von Abhängigkeiten sind schwer einzuhalten. Sie müssen manuell für die Versionsnummer und jede Änderung der implementierten Support-Bibliotheken gepflegt werden. Zum Beispiel hebt Android Studio neuere verfügbare lib-Versionen hervor, interpretiert diese Regeln jedoch nicht.
Manuel
12

Verwenden Sie support-v13 anstelle von support-v4

compile 'com.android.support:support-v13:25.2.0'
Mehmet Hanoğlu
quelle
Ich bekomme ein Problem damit: kompiliere 'com.android.support:recyclerview-v7:25.2.0'
Crime_Master_GoGo
Genau der gleiche Fehler wie oben: -> Alle com.android.support-Bibliotheken müssen genau die gleiche Versionsspezifikation verwenden. Recyclerview
Crime_Master_GoGo
@ Googli, Bitte schreibe compileSdkVersion , buildToolsVersion und Abhängigkeiten, die ich verwendet habe. Kein Problemcompile '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

Fügen Sie diese in Abhängigkeiten auf App-Ebene hinzu

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
quelle
9

Mein Problem ist ähnlich wie deins. Hier liegt ein Fehler vor!

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

Alle com.android.support-Bibliotheken müssen genau dieselbe Versionsspezifikation verwenden (das Mischen von Versionen kann zu Laufzeitabstürzen führen). Gefundene Versionen 25.3.0, 24.0.0. Beispiele sind 'com.android.support:animated-vector-drawable:25.3.0' und 'com.android.support:mediarouter-v7:24.0.0'.

Beispiele hierfür sind "com.android.support:animated-vector-drawable:25.3.0" und "com.android.support:mediarouter-v7:24.0.0".

Wenn Sie diese Codes nur in Abhängigkeiten hinzufügen, stellen Sie sicher, dass die Versionen identisch sind.

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

Ich habe den gleichen Fehler nach dem Hinzufügen compile 'com.google.android.gms:play-services:10.2.4'mit compile erhalten 'com.android.support:appcompat-v7:25.3.1'.

Das Problem wurde hinzugefügt animated-vector-drawableund mediarouter libsbehoben.

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
quelle
9

Ich hatte das:

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'
}

und habe diesen Fehler bekommen: Geben Sie hier die Bildbeschreibung ein

Die Lösungen waren einfach - die primären Abhängigkeiten waren alle korrekt, so dass die Blätter jedoch - Abhängigkeiten von Drittanbietern. Eins nach dem anderen entfernt, bis der Täter gefunden wurde, und sich als Facebook herausstellt! Es verwendet die Version 27.0.2 der Android-Support-Bibliotheken. Ich habe versucht, die Cardview-Version 27.1.1 hinzuzufügen, aber das hat nicht funktioniert, obwohl die Lösung immer noch einfach genug war.

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
quelle
9

Ich habe dieses Problem nach dem Upgrade auf Android Studio 3.4 und SDK-Version auf 28.0.0 konfrontiert. Das Anwenden der folgenden Abhängigkeit löste das Problem für mich.

    implementation 'com.android.support:exifinterface:28.0.0'
Shaon
quelle
8

Ich habe diese beiden verwendet, um mein Problem nach dem Upgrade auf Android Studio 2.3 zu lösen

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

Ich hatte vorher das gleiche Problem und bekam die Lösung dafür.

Ich habe gerade die Bibliotheken hinzugefügt, die eine andere Version hatten, aber dieselbe Version von mir support:appcompat .

Für Ihren Fehler zum Beispiel:

Alle com.android.support-Bibliotheken müssen genau dieselbe Versionsspezifikation verwenden (das Mischen von Versionen kann zu Laufzeitabstürzen führen). Gefundene Versionen 25.1.1, 24.0.0. Beispiele sind com.android.support:animated-vector-drawable:25.1.1 und com.android.support:mediarouter-v7:24.0.0

* Die Lösung besteht darin, die Versionen dieser Bibliotheken folgendermaßen zu kompilieren:

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

-wenn eine andere Bibliothek das gleiche Problem hatte und eine andere Version hatte, kompilieren Sie es einfach mit Ihrer support:appcompat Version

Dies hat mein Problem gelöst und ich hoffe, es löst Ihr Problem.

Die besten Wünsche :)

Hesham Morsy
quelle
8

Nach dem Suchen und Kombinieren von Antworten hat die Version 2018 dieser Frage für mich funktioniert:

1) Ändern Sie es auf der Registerkarte Navigation in die Projektansicht

2) Navigieren Sie zu [YourProjectName] /. Idea / library /

3) Löschen Sie alle Dateien, die mit Gradle__com_android_support_ [libraryName] beginnen.

Beispiel: Gradle__com_android_support_animated_vector_drawable_26_0_0.xml

4) Definieren Sie in Ihrer Gradle-Datei eine Variable und ersetzen Sie damit die Versionsnummer wie $ {variableName}

Def Variable:

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

Variable verwenden:

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

Beispiel 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
quelle
1
Diese Antwort bedarf weiterer Erläuterungen. Ein Leser könnte zu der Überzeugung gebracht werden, dass er Ihre gesamte Gradle-Datei kopieren und in sein Projekt einfügen sollte. Sie sollten erklären, warum Sie die Erweiterung hinzugefügt haben und warum Sie einige Unterstützungsbibliotheken auf die gplaysvcs-Version, andere auf die supportlib-Version und einige unverändert festgelegt haben.
Jungledev
8

Sehr einfach mit der neuen Version des Android Studio 3.x.

Kopieren Sie einfach die Version, die kleiner als die aktuelle Version ist, und fügen Sie sie explizit mit derselben Versionsnummer wie die aktuelle Version hinzu.

Beispiel

Gefundene Versionen 27.1.1, 27.1.0. Beispiele sind com.android.support:animated-vector-drawable:27.1.1 und com.android.support:exifinterface:27.1.0

Kopieren Sie einfach die Version com.android.support:exifinterface:27.1.0und ändern Sie sie com.android.support:exifinterface:27.1.1so, dass sie der aktuell verwendeten Version entspricht, und fügen Sie sie wie folgt zu Ihren Gradle-Abhängigkeiten hinzu.

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

Hinweis: Wenn Sie fertig sind, vergessen Sie nicht, oben im Editor auf Jetzt synchronisieren zu klicken .

Muhammad
quelle
7

im Jahr 2018 Update für diesen Fehler Implementierung aus Projektstruktur hinzufügen

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

Im Projektmodus -> Externe Bibliotheken finden Sie dort Ihr Problem. In meinem Fall verwende ich Version 28 und externe Bibliotheken, die ich gefunden habe, com.android.support:support-media-compat-26.0.0und hier war der Fehler.

nach der Implementierung support v13und es funktioniert

Immer Bijoy
quelle
Die rote Unterstreichung verschwand mit dieser Implementierung.
Truong Hieu
6

Sie haben eine andere Abhängigkeit definiert mit Version zu kompilieren 24.0.0statt 25.1.1. Bitte stellen Sie alle Abhängigkeiten auf die gleiche Weise ein wie 25.1.1.

Sneh Pandya
quelle
Ich habe meine Antwort aktualisiert. Alle Support-Versionen haben dieselbe Version 25.1.1
Humazed
6

Ich musste die folgenden Zeilen in Gradle hinzufügen, um den Fehler zu beheben

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
quelle
6

Ich habe ./gradlew-Tasks --all ausgeführt und nach Abhängigkeiten gesucht, die eine andere Version als die Zielversion (25.3.1) hatten. Sie werden so etwas bekommen:

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

In diesem Fall war ich auf 25.3.1 ausgerichtet und hatte einige Abhängigkeiten, die auf verschiedene Versionen abzielten, als ich diesen Befehl ausführte. Der Trick besteht darin, die Abhängigkeiten in dieser Liste zu identifizieren, die auf frühere Versionen abzielen, und diese zu überschreiben, indem die neueste Version der Abhängigkeit in Gradle importiert wird.

Matt W.
quelle
6

Ich habe das gleiche Problem, aber ich habe es gelöst, indem ich diese drei Zeilen hinzugefügt habe

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'

Jetzt funktioniert alles perfekt

Hamza Rahman
quelle
6

Hier ist mein Ablauf, um diese Warnung zu beheben

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)
    }
}

So zeigen Siedependencies alle Bibliotheken in Ihrer App an / überprüfen sie
Öffnen Sie das Terminal und führen Sie es aus./gradlew app:dependencies

Um das dependencieseiner bestimmten Bibliothek in Ihrer App anzuzeigen, folgen Sie dem Tutorial hier: - So schließen Sie Abhängigkeiten einer bestimmten Abhängigkeit in Gradle aus

Hoffe es hilft

Phan Van Linh
quelle
5

Wenn Sie die externe Bibliothek Ihres Projekts öffnen, werden Sie feststellen, dass einige Bibliotheken noch die vorherige Version verwenden, obwohl Sie diese Bibliothek nicht erwähnt haben. Mein Vorschlag ist daher, nur die bestimmte Bibliotheksversion für diejenigen zu verwenden, die Ihr Problem lösen.

Subho
quelle
5

Ich aktualisiere gerade mein Android Support Repository auf (Revision: 44.0.0); dann Android SDK Tools und Emulator auf die neueste Version 25.3.1 von SDK Manager> SDK Tools Und es hat mein Problem gelöst.

Ajit Thapa
quelle