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'
}
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".
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
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.
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
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