it-swarm.com.de

Android-Abhängigkeit hat unterschiedliche Versionen für die Kompilierung und Laufzeit

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

71
DroidLearner

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

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

76
Yayo Arellano

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

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

4

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)

3
Dacre Denny

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"
            }
        }
2
DILIP KOSURI

Ich kommentiere //api 'com.google.Android.gms:play-services-ads:15.0.1' aus, es hat für mich nach der Synchronisation funktioniert

1
Fredrick Reuben

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

1
Ali Imran

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.

1
Ajani Eniola

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"
                }
            }
        }
    }
1
i am E

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"

1
tushar

Wenn dieses Abhängigkeitsproblem 2019 auftritt, aktualisieren Sie Android Studio auf 3.4 oder höher

0
Atul Vasudev A