Nach dem Update von Android Studio von Canary 3 auf Canary 4 wird beim Erstellen der folgende Fehler ausgegeben.
Die Android-Abhängigkeit 'com.android.support:support-support-v4' hat eine andere Version für den Klassenpfad compile (25.2.0) und runtime (26.0.0-beta2). Sie sollten dieselbe Version manuell über DependencyResolution festlegen.
Ich habe während des gesamten Projekts eine vollständige Suche durchgeführt und die Version 25.1.0
wird nicht verwendet.
App-build.gradle
android {
compileSdkVersion 26
buildToolsVersion '26.0.0'
defaultConfig {
applicationId "com.xxx.xxxx"
minSdkVersion 14
targetSdkVersion
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
debug {
debuggable true
}
release {
debuggable false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
lintOptions {
abortOnError false
}
}}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
implementation project(':core')
implementation com.google.android.gms:play-services-gcm:9.0.0'
implementation('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
transitive = true
}
implementation 'com.android.support:multidex:1.0.1'
implementation 'com.flurry.android:analytics:7.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
implementation 'com.jakewharton:butterknife:8.6.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
}
Library-build.gradle:
apply plugin: 'com.android.library'
android {
compileSdkVersion 26
buildToolsVersion '26.0.0'
defaultConfig {
minSdkVersion 14
targetSdkVersion
versionCode 1
versionName "1.0"
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation files('libs/model.jar')
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:percent:26.0.0-beta2'
implementation 'com.android.support:appcompat-v7:26.0.0-beta2'
implementation 'com.android.support:support-core-utils:26.0.0-beta2'
implementation 'com.squareup.retrofit2:retrofit:2.0.2'
implementation 'com.squareup.picasso:picasso:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
implementation 'com.squareup.okhttp3:logging-interceptor:3.2.0'
implementation 'uk.co.chrisjenx:calligraphy:2.2.0'
implementation 'com.google.code.gson:gson:2.2.4'
implementation 'com.android.support:design:26.0.0-beta2'
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.1'
}
Hinweis: Das Projekt in Canary 3 lief einwandfrei
android
android-gradle-plugin
build.gradle
DroidLearner
quelle
quelle
Antworten:
Verwenden Sie diesen Code in Ihrem Buildscript (build.gradle root):
quelle
!details.requested.name.contains('multidex')
hat mir wirklich geholfen, das einzubeziehen.Ich hatte den gleichen Fehler, was mein Problem löste. In meiner Bibliothek verwende ich anstelle von Kompilieren oder Implementieren "api". Also am Ende meine Abhängigkeiten:
Weitere Informationen zu "API" und "Implementierung" finden Sie unter diesem Link https://stackoverflow.com/a/44493379/3479489
quelle
Sie sollten in der Lage sein, genau zu sehen, welche Abhängigkeit in der ungeraden Version als transitive Abhängigkeit abgerufen wird, indem Sie den richtigen
gradle -q dependencies
Befehl für Ihr Projekt ausführen, wie hier beschrieben:https://docs.gradle.org/current/userguide/userguide_single.html#sec:listing_dependencies
Sobald Sie herausgefunden haben, was es in sich zieht, können Sie dieser spezifischen Abhängigkeit in Ihrer Gradle-Datei einen Ausschluss hinzufügen, der Folgendes umfasst:
quelle
Nach viel Zeit und Hilfe von einem Freund, der viel mehr als ich über Android weiß: app / build.gradle
und Abhängigkeiten
in build.gradle
in gradle.properties
quelle
resolutionStrategy.force
war das einzige, was für mich funktioniert hat. Vielen Dank!Die Antwort für mich war, dies auch zu meiner
build.gradle
Datei hinzuzufügen :In meinem Fall war es notwendig, die Auflösungsstrategie in einen
configurations.all { .. }
Block einzuschließen . Ich habe denconfigurations.all
Block direkt in meineapp/build.gradle
Datei eingefügt (dhconfigurations.all
in nichts anderem verschachtelt)quelle
Das hat bei mir funktioniert:
Fügen Sie
app/build.gradle
im Abschnitt "Abhängigkeiten" die folgende Zeile hinzu :oder
:27.1.1
in meinem Fallquelle
Fügen Sie diesen Code in Ihre build.gradle-Datei auf Projektebene ein.
Beispielcode :
quelle
Wenn jemand dieses Abhängigkeitsproblem im Jahr 2019 hat, aktualisieren Sie Android Studio auf 3.4 oder höher
quelle
Ich habe es gelöst, indem ich meine Gradle-Abhängigkeit in der Datei android / build.gradle aktualisiert habe: Klassenpfad 'com.android.tools.build:gradle:3.3.1' (ich war zuvor in Version 3.2.
quelle
Ich habe es gelöst, indem ich dem folgte, was Eddi oben erwähnt hat:
quelle
Das Wechseln meiner widersprüchlichen Abhängigkeiten von der Implementierung zur API reicht aus. Hier ist ein guter Artikel von mindorks, der den Unterschied erklärt.
https://medium.com/mindorks/implementation-vs-api-in-gradle-3-0-494c817a6fa
Bearbeiten:
Hier sind auch meine Abhängigkeitsauflösungen
quelle
Sehen Sie in Ihren Bibliotheksprojekten, dass die Versionen compileSdkVersion und targetSdkVersion auf dem gleichen Niveau wie Ihre Anwendung sind
Machen Sie auch alle Abhängigkeiten auf die gleiche Ebene
quelle
Ich kommentiere aus, dass
//api 'com.google.android.gms:play-services-ads:15.0.1'
es nach der Synchronisierung bei mir funktioniert hatquelle
Fügen Sie diese Zeilen einfach in Ihre build.gradle-Datei ein
ResolutionStrategy.force "com.android.support:support-media-compat:26.0.0-beta2"
ResolutionStrategy.force "com.android.support:support-v4:26.0.0-beta2"
quelle
In meinem Fall hatte ich zwei verschiedene Versionen der folgenden Implementierung in zwei verschiedenen Modulen. Also habe ich beide Implementierungen in Versionen geändert, dh: 6.0.2 und es hat funktioniert. Möglicherweise müssen Sie auch eine Abhängigkeitsauflösung schreiben, um die akzeptierte Antwort zu sehen.
App-Modul
Commons-Modul
quelle
füge dies zu gradle (project) inside hinzu
allprojects
quelle
Ersetzen Sie eine fest codierte Version durch + Beispiel:
quelle