Nach dem Update von Android Studio von Canary 3 auf Canary 4 wird der folgende Fehler zum Erstellungszeitpunkt ausgegeben.
Die Android-Abhängigkeit 'com.Android.support:support-support-v4' hat unterschiedliche Versionen für den Klassenpfad compile (25.2.0) und Laufzeit (26.0.0-beta2). Sie sollten dieselbe Version manuell über DependencyResolution einstellen.
Ich habe im gesamten Projekt 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:[email protected]') {
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 wurde in Canary 3 gut gebaut
Verwenden Sie diesen Code in Ihrem Buildscript (build.gradle root):
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.Android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "version which should be used - in your case 26.0.0-beta2"
}
}
}
}
Ich hatte den gleichen Fehler, was mein Problem zu lösen war. In meiner library verwende ich anstelle von compilieren oder implementieren "api". Also am Ende meine Abhängigkeiten:
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
api files('libs/model.jar')
testApi 'junit:junit:4.12'
api 'com.Android.support:percent:26.0.0-beta2'
api 'com.Android.support:appcompat-v7:26.0.0-beta2'
api 'com.Android.support:support-core-utils:26.0.0-beta2'
api 'com.squareup.retrofit2:retrofit:2.0.2'
api 'com.squareup.picasso:picasso:2.4.0'
api 'com.squareup.retrofit2:converter-gson:2.0.2'
api 'com.squareup.okhttp3:logging-interceptor:3.2.0'
api 'uk.co.chrisjenx:calligraphy:2.2.0'
api 'com.google.code.gson:gson:2.2.4'
api 'com.Android.support:design:26.0.0-beta2'
api 'com.github.PhilJay:MPAndroidChart:v3.0.1'
}
Weitere Informationen zu "API", "Implementierung" finden Sie in diesem Link https://stackoverflow.com/a/44493379/3479489
Sie sollten in der Lage sein, genau zu sehen, welche Abhängigkeit in der ungeraden Version als transitive Abhängigkeit auftritt, indem Sie den korrekten gradle -q dependencies
-Befehl für Ihr Projekt wie hier beschrieben ausführen:
https://docs.gradle.org/current/userguide/userguide_single.html#sec:listing_dependencies
Wenn Sie nachverfolgt haben, was es zieht, können Sie dieser bestimmten Abhängigkeit in Ihrer Gradle-Datei einen Ausschluss hinzufügen, beispielsweise:
implementation("XXXXX") {
exclude group: 'com.Android.support', module: 'support-compat'
}
Nach langer Zeit und Hilfe eines Freundes, der viel mehr über mich als Android weiß:
Android {
compileSdkVersion 27
// org.gradle.caching = true
defaultConfig {
applicationId "com.cryptoviewer"
minSdkVersion 16
targetSdkVersion 23
versionCode 196
versionName "16.83"
// ndk {
// abiFilters "armeabi-v7a", "x86"
// }
}
und Abhängigkeiten
dependencies {
implementation project(':react-native-camera')
//...
implementation "com.Android.support:appcompat-v7:26.1.0" // <= YOU CARE ABOUT THIS
implementation "com.facebook.react:react-native:+" // From node_modules
}
in build.gradle
allprojects {
//...
configurations.all {
resolutionStrategy.force "com.Android.support:support-v4:26.1.0"
}
in gradle.properties
Android.useDeprecatedNdk=true
Android.enableAapt2=false
org.gradle.jvmargs=-Xmx4608M
lösung für mich: Fügen Sie die folgende Zeile in app/src/build.gradle im Abschnitt Abhängigkeiten hinzu:
implementation "com.Android.support:appcompat-v7:27.1.0"
oder: 27.1.1 in meinem Fall
Die Antwort für mich war, dies auch in meine build.gradle
-Datei einzufügen:
configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.Android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "26.1.0"
}
}
}
In meinem Fall musste die Auflösungsstrategie in einen configurations.all { .. }
-Block eingeschlossen werden. Ich habe den configurations.all
-Block direkt in meine app/build.gradle
-Datei eingefügt (dh configurations.all
wurde in nichts anderes verschachtelt)
Ich löste es, indem ich folgte, was Eddi oben sagte
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.Android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "26.1.0"
}
}
Ich kommentiere //api 'com.google.Android.gms:play-services-ads:15.0.1'
aus, es hat für mich nach der Synchronisation funktioniert
Sehen Sie in Ihren Bibliotheksprojekten die Version compileSdkVersion und targetSdkVersion auf das gleiche Niveau wie Ihre Anwendung
Android {
compileSdkVersion 28
defaultConfig {
consumerProguardFiles 'proguard-rules.txt'
minSdkVersion 14
targetSdkVersion 28
}
}
alle Abhängigkeiten auf die gleiche Ebene setzen
Ich habe das Problem gelöst, indem ich meine Gradle-Abhängigkeit in der Android/build.gradle-Datei aktualisiert habe: Klassenpfad 'com.Android.tools.build:gradle:3.3.1' (ich hatte zuvor Version 3.2.
Der Wechsel meiner widersprüchlichen Abhängigkeiten von der Implementierung zur API ist der Trick. 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 ist auch meine Abhängigkeitsauflösung
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.Android.support'
&& !details.requested.name.contains('multidex')) {
details.useVersion "28.0.0"
}
if (details.requested.group == 'com.google.Android.gms'
&& details.requested.name.contains('play-services-base')) {
details.useVersion "15.0.1"
}
if (details.requested.group == 'com.google.Android.gms'
&& details.requested.name.contains('play-services-tasks')) {
details.useVersion "15.0.1"
}
}
}
}
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"
Wenn dieses Abhängigkeitsproblem 2019 auftritt, aktualisieren Sie Android Studio auf 3.4 oder höher