web-dev-qa-db-fra.com

Android La dépendance '..' a une version différente pour le classpath compile (..) et runtime (..)

J'ai migré vers Android Studio 3 et Gradle 4. Ensuite, j'ai remplacé compile par implementation dans mes fichiers build.gradle. Mais je reçois le message d'erreur:

Error:Execution failed for task ':app:preDebugBuild'.
> Android dependency 'com.google.firebase:firebase-core' has different version for the compile (9.0.0) and runtime (11.6.0) classpath. You should manually set the same version via DependencyResolution

Lorsque je remplace implementation par api, l'erreur disparaît. Mais ce n'est pas la solution. J'ai le module d'application et un module de bibliothèque. L'application build.gradle n'a qu'une seule dépendance:

implementation project(':common-lib')

Le apply plugin: 'com.google.gms.google-services' est correctement placé au bas du fichier build.gradle de l'application (le projet a fonctionné avant la migration vers Gradle 4)

Dépendances de l'application gradlew: dépendances (découpage du texte):

Compiler

debugAndroidTestCompileClasspath - Resolved configuration for compilation for variant: debugAndroidTest
+--- com.google.firebase:firebase-core:9.0.0
|    \--- com.google.firebase:firebase-analytics:9.0.0
|         +--- com.google.Android.gms:play-services-basement:9.0.0
|         |    \--- com.Android.support:support-v4:23.0.0
|         |         \--- com.Android.support:support-annotations:23.0.0
|         +--- com.google.firebase:firebase-common:9.0.0
|         |    +--- com.google.Android.gms:play-services-basement:9.0.0 (*)
|         |    \--- com.google.Android.gms:play-services-tasks:9.0.0
|         |         \--- com.google.Android.gms:play-services-basement:9.0.0 (*)
|         \--- com.google.firebase:firebase-analytics-impl:9.0.0
|              +--- com.google.Android.gms:play-services-base:9.0.0
|              |    +--- com.google.Android.gms:play-services-basement:9.0.0 (*)
|              |    +--- com.google.firebase:firebase-common:9.0.0 (*)
|              |    \--- com.google.Android.gms:play-services-tasks:9.0.0 (*)
|              +--- com.google.Android.gms:play-services-basement:9.0.0 (*)
|              +--- com.google.firebase:firebase-iid:9.0.0
|              |    +--- com.google.Android.gms:play-services-basement:9.0.0 (*)
|              |    \--- com.google.firebase:firebase-common:9.0.0 (*)
|              \--- com.google.firebase:firebase-common:9.0.0 (*)
\--- project :common-lib
(............)

Runtime

debugAndroidTestRuntimeClasspath - Resolved configuration for runtime for variant: debugAndroidTest
+--- com.google.firebase:firebase-core:9.0.0 -> 11.6.0
|    \--- com.google.firebase:firebase-analytics:11.6.0
|         +--- com.google.Android.gms:play-services-basement:11.6.0
|         |    +--- com.Android.support:support-v4:25.2.0 -> 26.1.0
|         |    |    +--- com.Android.support:support-compat:26.1.0
|         |    |    |    +--- com.Android.support:support-annotations:26.1.0
|         |    |    |    \--- Android.Arch.lifecycle:runtime:1.0.0
|         |    |    |         +--- Android.Arch.lifecycle:common:1.0.0
|         |    |    |         \--- Android.Arch.core:common:1.0.0
|         |    |    +--- com.Android.support:support-media-compat:26.1.0
|         |    |    |    +--- com.Android.support:support-annotations:26.1.0
|         |    |    |    \--- com.Android.support:support-compat:26.1.0 (*)
|         |    |    +--- com.Android.support:support-core-utils:26.1.0
|         |    |    |    +--- com.Android.support:support-annotations:26.1.0
|         |    |    |    \--- com.Android.support:support-compat:26.1.0 (*)
|         |    |    +--- com.Android.support:support-core-ui:26.1.0
|         |    |    |    +--- com.Android.support:support-annotations:26.1.0
|         |    |    |    \--- com.Android.support:support-compat:26.1.0 (*)
|         |    |    \--- com.Android.support:support-fragment:26.1.0
|         |    |         +--- com.Android.support:support-compat:26.1.0 (*)
|         |    |         +--- com.Android.support:support-core-ui:26.1.0 (*)
|         |    |         \--- com.Android.support:support-core-utils:26.1.0 (*)
|         |    \--- com.google.Android.gms:play-services-basement-license:11.6.0
|         +--- com.google.firebase:firebase-common:11.6.0
|         |    +--- com.google.Android.gms:play-services-basement:11.6.0 (*)
|         |    +--- com.google.Android.gms:play-services-tasks:11.6.0
|         |    |    +--- com.google.Android.gms:play-services-basement:11.6.0 (*)
|         |    |    \--- com.google.Android.gms:play-services-tasks-license:11.6.0
|         |    \--- com.google.firebase:firebase-common-license:11.6.0
|         +--- com.google.firebase:firebase-analytics-impl:11.6.0
|         |    +--- com.google.Android.gms:play-services-basement:11.6.0 (*)
|         |    +--- com.google.firebase:firebase-iid:11.6.0
|         |    |    +--- com.google.Android.gms:play-services-basement:11.6.0 (*)
|         |    |    +--- com.google.firebase:firebase-common:11.6.0 (*)
|         |    |    +--- com.google.Android.gms:play-services-tasks:11.6.0 (*)
|         |    |    \--- com.google.firebase:firebase-iid-license:11.6.0
|         |    +--- com.google.firebase:firebase-common:11.6.0 (*)
|         |    +--- com.google.Android.gms:play-services-tasks:11.6.0 (*)
|         |    \--- com.google.firebase:firebase-analytics-impl-license:11.6.0
|         \--- com.google.firebase:firebase-analytics-license:11.6.0
\--- project :common-lib
(.............)

Édité:

dépendances de l'application

dependencies {
    implementation project(':common-lib')
}

dépendances Common-Lib

dependencies {
    //Android firebase
    implementation "com.google.firebase:firebase-core:$firebase_version"
    implementation "com.google.firebase:firebase-crash:$firebase_version"
    implementation "com.google.firebase:firebase-messaging:$firebase_version"
    implementation "com.google.firebase:firebase-ads:$firebase_version"
    //Android support
    implementation "com.Android.support:appcompat-v7:$support_version"
    implementation "com.Android.support:design:$support_version"
    implementation "com.Android.support:cardview-v7:$support_version"
    implementation "com.Android.support:percent:$support_version"
    //others
    implementation 'com.google.code.gson:gson:2.8.0'
    implementation 'com.hannesdorfmann:adapterdelegates3:3.0.1'
    implementation 'net.danlew:Android.joda:2.9.9'
    implementation 'org.ocpsoft.prettytime:prettytime:4.0.1.Final'
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'com.github.simbiose:Encryption:2.0.1'

    //server
    implementation files('libs/xxx.jar')
    implementation files('libs/yyy.jar')
    implementation files('libs/zzz.jar')

    //tests
    testImplementation 'junit:junit:4.12'

}

versions:

ext {
    firebase_version = '11.6.0'
    support_version = '26.1.0'
}
22
AppiDevo

Il semble que précédemment, vous dépendiez implicitement du module common-lib pour exporter les kits de développement logiciel (SDK) Firebase vers votre module d'application. Maintenant que vous êtes passé de "compiler" à "implémentation", vous n’exportez plus ces SDK. Voici donc ce qui se passe actuellement: le plug-in de google-services ajoute la v9.0.0 de firebase-core à votre module d'application, car il ne la voit plus dans le chemin de classe visible de votre module d'application.

Vous devriez pouvoir contourner ce problème en ajoutant manuellement firebase-core à votre module d'application à la version appropriée. Ou bien, vous pouvez continuer à exporter des SDK Firebase de votre module de bibliothèque vers votre module d'application en basculant sur une dépendance "api" au lieu d'une dépendance "implémentation".

36
Doug Stevenson

cela a fonctionné pour moi:

ajouter le code suivant dans votre votre buildscript

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

Meilleures salutations,

Eddi

5
user3908686

Changer la version de google-services sur le fichier de niveau supérieur a résolu le problème pour moi. Il semble que l'ancienne version injecte indirectement les versions de firebase-core et que la mise à jour de la version de firebase crée explicitement le conflit.

classpath 'com.google.gms:google-services:4.0.2' // Just updated the version here.
1
Jiju Induchoodan

J'ai mis à jour compileSdkVersion & targetSdkVersion à 28 et j'ai également été confronté à la même erreur.

J'ai mis à niveau toutes les versions de dépendances dans app.gradle vers 28.0.0 et également dans le fichier de projet .gradle mis à niveau avec com.Android.tools.build:gradle vers 3.3.2

i.e classpath 'com.Android.tools.build:gradle:3.3.2'

Après la synchronisation de ce projet

0
Rakesh Verma
subprojects {
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.Android.support'
                    && !details.requested.name.contains('multidex') ) {
                details.useVersion "26.1.0"
            }
        }
    }
}

mettre ce code dans votre projet

0
Makvin