der KatalysatorWie Verwenden von Gradle-Abhängigkeitsbaum, um Android-Support-Bibliotheksversionskonflikt aufzulösen?
Ich habe ein Upgrade Android Studio 2.3 und Gradle Plugin 3.3
das ursprüngliche Problem
Nach dem Gradle Plugin 3.3 aktualisieren, ich den Fehler „Fehler erhalten: Die SDK Build Tools-Version (23.0.3) ist zu niedrig für das Projekt ': mymodulename'. Erforderlich ist mindestens 25.0.0 "
Ich habe versucht, buildToolsVersion auf 25.0.2 zu justieren und compileSdkVers Ion zu 25, zusammen mit allen Abhängigkeiten von com.android.support (da ihre Hauptversion mit compileSdkVersion übereinstimmen muss). Diese Anpassung löste dieses Problem, aber dann wurde mir klar, dass meine App Nougat noch nicht unterstützt, also reduzierte ich die compileSdkVersion auf meine targetSdkVersion von 23. Die Fehlermeldung über zu niedrige Build-Tools war immer noch weg, also dachte ich, ich wäre im Klartext .
der erste Abhängigkeitsfehler
Nach compileSdkVersion bis zu 23 Klopfen habe ich versucht, neu zu erstellen, und sah mehrere Fehler ähnlich wie „Fehler: (3) Fehler beim Abrufen der Eltern für die Position: Keine Ressource, dass die angegebenen Spiele name 'android: TextAppearance.Material.Widget.Button.Borderless.Colored' ". Ich erkennen, dass ich vergessen hatte meine com.android.support Abhängigkeiten zu ändern, so dass ihre Hauptversion das untere compileSdkVersion wieder angepasst, so dass ich stieß sie auf 23.3.0 unten
den zweiten Abhängigkeitsfehler
Nach Bei der Auflösung des ersten Abhängigkeitsfehlers konnte ich meine App erneut kompilieren und ausführen. Allerdings gab es immer noch einen roten Kringel unter meiner ersten com.android.support-Abhängigkeit, mit der Fehlermeldung "Alle com.android.support-Bibliotheken müssen genau die gleiche Versionsspezifikation verwenden (das Mischen von Versionen kann zu Laufzeitabstürzen führen). Gefundene Versionen 24.0 .0, 23.3.0 Beispiele sind com.android.support:support-v4:24.0.0 und com.android.support:animated-vector-drawable:23.3.0 "
Nichts in meinem build.gradle speziell 24.0.0 verweist, siehe:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion '25.0.2'
defaultConfig {
applicationId ...
minSdkVersion 16
targetSdkVersion 23
versionCode ...
versionName ...
}
buildTypes {
debug{
debuggable true
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions{
//check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
dexOptions{
jumboMode true
}
}
repositories {
// You can also use jcenter if you prefer
mavenCentral()
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
//android support libs etc.
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:support-v13:23.3.0'
compile 'com.android.support:mediarouter-v7:23.3.0'
compile 'com.android.support:recyclerview-v7:23.3.0'
//snackbar support
compile 'com.android.support:design:23.3.0'
//Facebook Android SDK
compile 'com.facebook.android:facebook-android-sdk:4.7.0'
//Facebook Audience Network SDK. Only versions 4.6.0 and above are available
compile 'com.facebook.android:audience-network-sdk:4.7.0'
//gplay services dependencies
compile 'com.google.android.gms:play-services-plus:10.0.1'
compile 'com.google.android.gms:play-services-analytics:10.0.1'
compile 'com.google.android.gms:play-services-location:10.0.1'
//provides Firebase Analytics
compile 'com.google.firebase:firebase-core:10.0.1'
//provides Google Mobile Ads SDK, a.k.a the AdMob service.
compile 'com.google.firebase:firebase-ads:10.0.1'
//dependencies required by the InMobi ads SDK
compile 'com.squareup.picasso:picasso:2.5.2'
}
apply plugin: 'com.google.gms.google-services'
der Abhängigkeitsbaum
um f Wenn ich herausfinden möchte, woher die 24.0.0-Abhängigkeit kam, habe ich eine Abhängigkeitsbaumstruktur mit './gradlew -q Abhängigkeiten mymodulename: Abhängigkeiten - Konfiguration kompilieren' erstellt. Die Ausgabe lautet:
compile - Classpath for compiling the main sources.
+--- com.android.support:appcompat-v7:23.3.0
| +--- com.android.support:support-vector-drawable:23.3.0
| | \--- com.android.support:support-v4:23.3.0 -> 24.0.0
| | \--- com.android.support:support-annotations:24.0.0
| +--- com.android.support:animated-vector-drawable:23.3.0
| | \--- com.android.support:support-vector-drawable:23.3.0 (*)
| \--- com.android.support:support-v4:23.3.0 -> 24.0.0 (*)
+--- com.android.support:support-v13:23.3.0
| \--- com.android.support:support-v4:23.3.0 -> 24.0.0 (*)
+--- com.android.support:mediarouter-v7:23.3.0
| +--- com.android.support:appcompat-v7:23.3.0 (*)
| \--- com.android.support:palette-v7:23.3.0
| \--- com.android.support:support-v4:23.3.0 -> 24.0.0 (*)
+--- com.android.support:design:23.3.0
| +--- com.android.support:appcompat-v7:23.3.0 (*)
| +--- com.android.support:support-v4:23.3.0 -> 24.0.0 (*)
| \--- com.android.support:recyclerview-v7:23.3.0
| +--- com.android.support:support-v4:23.3.0 -> 24.0.0 (*)
| \--- com.android.support:support-annotations:23.3.0 -> 24.0.0
+--- com.facebook.android:facebook-android-sdk:4.7.0
| +--- com.parse.bolts:bolts-android:1.2.0
| \--- com.android.support:support-v4:[22,23) -> 24.0.0 (*)
+--- com.facebook.android:audience-network-sdk:4.7.0
| \--- com.google.android.gms:play-services-ads:7.8.0 -> 10.0.1
| +--- com.google.android.gms:play-services-ads-lite:10.0.1
| | \--- com.google.android.gms:play-services-basement:10.0.1
| | \--- com.android.support:support-v4:24.0.0 (*)
| +--- com.google.android.gms:play-services-base:10.0.1
| | +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| | \--- com.google.android.gms:play-services-tasks:10.0.1
| | \--- com.google.android.gms:play-services-basement:10.0.1 (*)
| +--- com.google.android.gms:play-services-clearcut:10.0.1
| | +--- com.google.android.gms:play-services-base:10.0.1 (*)
| | \--- com.google.android.gms:play-services-basement:10.0.1 (*)
| +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| \--- com.google.android.gms:play-services-gass:10.0.1
| \--- com.google.android.gms:play-services-basement:10.0.1 (*)
+--- com.google.android.gms:play-services-plus:10.0.1
| +--- com.google.android.gms:play-services-base:10.0.1 (*)
| \--- com.google.android.gms:play-services-basement:10.0.1 (*)
+--- com.google.android.gms:play-services-analytics:10.0.1
| +--- com.google.android.gms:play-services-analytics-impl:10.0.1
| | +--- com.google.android.gms:play-services-base:10.0.1 (*)
| | \--- com.google.android.gms:play-services-basement:10.0.1 (*)
| +--- com.google.android.gms:play-services-base:10.0.1 (*)
| +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| \--- com.google.android.gms:play-services-tagmanager-v4-impl:10.0.1
| +--- com.google.android.gms:play-services-analytics-impl:10.0.1 (*)
| +--- com.google.android.gms:play-services-base:10.0.1 (*)
| \--- com.google.android.gms:play-services-basement:10.0.1 (*)
+--- com.google.android.gms:play-services-location:10.0.1
| +--- com.google.android.gms:play-services-base:10.0.1 (*)
| +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| \--- com.google.android.gms:play-services-tasks:10.0.1 (*)
+--- com.google.firebase:firebase-core:10.0.1
| \--- com.google.firebase:firebase-analytics:10.0.1
| +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| +--- com.google.firebase:firebase-common:10.0.1
| | +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| | \--- com.google.android.gms:play-services-tasks:10.0.1 (*)
| \--- com.google.firebase:firebase-analytics-impl:10.0.1
| +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| +--- com.google.firebase:firebase-iid:10.0.1
| | +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| | \--- com.google.firebase:firebase-common:10.0.1 (*)
| \--- com.google.firebase:firebase-common:10.0.1 (*)
+--- com.google.firebase:firebase-ads:10.0.1
| +--- com.google.android.gms:play-services-ads:10.0.1 (*)
| \--- com.google.firebase:firebase-analytics:10.0.1 (*)
+--- com.squareup.picasso:picasso:2.5.2
\--- com.android.support:recyclerview-v7:23.3.0 (*)
(*) - dependencies omitted (listed previously)
die Fragen
Was bedeutet die Abhängigkeitsbaum Syntax 'lib-Version -> verschiedene lib Version' bedeuten? Genauer gesagt, wenn der Baum "com.android.support:support-v4:23.3.0 -> 24.0.0" sagt, was bedeutet das?
Wenn es implizite Anforderungen für com.android.support Version 24.xx Bibliotheken in einigen meiner anderen Abhängigkeiten gibt (siehe com.google.android.gms: play-services-basement: 10.0.1 abhängig von com. android.support:support-v4:24.0.0), warum hat das nicht gebaut.Gradle Throw-Fehler vor dem Android Studio, dem Gradle-Plugin und dem buildToolsVersion-Update, die bereits erwähnt wurden?
Wie kann ich sicherstellen, dass alle meine Abhängigkeiten mit compileSdkVersion 23 kompatibel sind?
Was passiert, wenn Sie mit 25 kompilieren, aber eine Unterstützungsbibliothek der Version 23 verwenden? –
Sie sollten den Abhängigkeitsbaum als Text veröffentlichen. Markieren Sie es und drücken Sie Strg-K, um die Formatierung beizubehalten. Diese Tastenkombination fügt die für einen Codeblock erforderlichen Leerzeichen hinzu. –
Beachten Sie, dass 'compileSdkVersion' das Verhalten Ihrer App nicht ändert - das wäre' targetSdkVersion', wie in [diesem Blogpost] erläutert (https://medium.com/google-developers/picking-your-compilesdkversion- minsdkversion-targetsdkversion-a098a0341ebd). Sie sollten immer mit der neuesten Version von Android kompilieren, auch wenn Sie nicht darauf abzielen. – ianhanniballake