web-dev-qa-db-fra.com

Comment résoudre toutes les dépendances de google play-services avec gradle?

Situation

Aujourd'hui, après ne rien avoir touché au projet, mon diplômé m'a crié dessus et ne voulait pas compiler le projet. Échec de la résolution de firebase-iid, firebase-common, play-services-analytics-impl, play-services-auth-api-phone et play-services-auth-base. Donc, tout un gâchis après le week-end. 

J'ai donc vérifié les versions des différentes API et mis à niveau celles qui nécessitaient une mise à niveau. J'ai découvert que Google avait ajouté une dépendance obligatoire à firebase-core, l'a ajouté, puis mis à niveau mon plugin google-services et même une dépendance play-services-base. J'ai également mis à niveau firebase-messaging vers la version 17.0.0 et crashlytics vers la version 2.9.3.

Mais toujours, la compilation ne compile pas, avec ce message d'erreur:

La bibliothèque com.google.Android.gms: play-services-measure-base est demandée par plusieurs autres bibliothèques sur [[15.0.2,15.0.2], [15.0.4,15.0.4]], mais elle se résout en 15.0.4. Désactivez le plug-in et vérifiez votre arborescence de dépendances à l'aide de ./gradlew: app: dependencies.

Gradle Files

Voici mon fichier Gradle (montrant uniquement les dépendances), après mes tentatives de corrections:

apply plugin: 'com.Android.application'

...
dependencies {
    implementation project(':library')
    implementation project(':otherlibrary')
    implementation 'com.Android.volley:volley:1.1.0'
    implementation('org.Apache.httpcomponents:httpmime:4.3.6') {
        exclude module: 'httpclient'
    }
    implementation 'org.Apache.httpcomponents:httpclient-Android:4.3.5'
    implementation 'com.google.Android.gms:play-services-base:15.0.1'
    implementation 'com.google.Android.gms:play-services-analytics:15.0.2'
    implementation 'com.google.Android.gms:play-services-location:15.0.1'
    implementation('com.google.Android.gms:play-services-ads:15.0.1') {
        exclude group: 'com.Android.support', module: 'customtabs'
    }
    implementation 'com.google.Android.gms:play-services-identity:15.0.1'
    implementation 'com.google.Android.gms:play-services-auth:15.0.1'
    implementation 'com.google.Android.gms:play-services-drive:15.0.1'
    implementation 'com.google.firebase:firebase-core:16.0.0'
    implementation 'com.google.firebase:firebase-messaging:17.0.0'

    implementation 'com.Android.support:multidex:1.0.3'
    implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1'
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'com.nineoldandroids:library:2.4.0'
    implementation 'com.daimajia.slider:library:1.1.5@aar'
    implementation 'com.Android.support.constraint:constraint-layout:1.1.0'
    implementation 'com.Android.support:appcompat-v7:27.1.1'
    implementation 'com.Android.support:mediarouter-v7:27.1.1'
    implementation 'com.Android.support:support-v4:27.1.1'
    implementation 'com.Android.support:design:27.1.1'
    implementation 'com.Android.support:exifinterface:27.1.1'
    implementation 'com.Android.support:support-v13:27.1.1'
    // https://mvnrepository.com/artifact/com.darwinsys/hirondelle-date4j
    implementation group: 'com.darwinsys', name: 'hirondelle-date4j', version: '1.5.1'
    // For RxAndroid and RxJava
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
// Because RxAndroid releases are few and far between, it is recommended you also
// explicitly depend on RxJava's latest version for bug fixes and new features.
// (see https://github.com/ReactiveX/RxJava/releases for latest 2.x.x version)
    implementation 'io.reactivex.rxjava2:rxjava:2.1.12'

    // Crashlytics
    implementation 'com.crashlytics.sdk.Android:crashlytics:2.9.3'

    // CSV with outputstream writer
    implementation 'com.opencsv:opencsv:4.1'

    // Gson
    implementation 'com.google.code.gson:gson:2.8.5'

    debugImplementation 'com.Android.support.test:runner:1.0.2'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.Android.support.test:runner:1.0.2'
    androidTestImplementation 'com.Android.support.test:rules:1.0.2'
    androidTestImplementation 'org.hamcrest:hamcrest-library:1.3'
    androidTestImplementation 'junit:junit:4.12'
}

apply plugin: 'com.google.gms.google-services'

Et mon diplôme au niveau du projet contient les lignes suivantes:

...
repositories {
    maven {
       url 'https://maven.google.com/'
       name 'Google'
    }
    ...
}
dependencies {
    ...
    classpath 'com.google.gms:google-services:4.0.1'
}
...

La solution officielle ne fonctionne pas

J'ai déjà essayé de fixer le numéro de version de plusieurs bibliothèques en fonction de la documentation officielle de firebase , qui est plus ou moins identique à cette question .
Comme vous pouvez le lire dans le lien de la documentation officielle, à compter du 2 mai 2018, ils offraient un moyen de résoudre ce type de problème, mais les numéros des versions en question ne sont pas les mêmes et j'ai déjà essayé fixer (avec quelques déclassements maintenant), en vain.

Documents officiels: Si votre application a une dépendance sur com.google.firebase: firebase-core: 15.0.0 ainsi que l'une des bibliothèques suivantes:

com.google.Android.gms:play-services-analytics
com.google.Android.gms:play-services-appinvite
com.google.Android.gms:play-services-tagmanager
com.google.firebase:firebase-analytics
com.google.firebase:firebase-crash
com.google.firebase:firebase-dynamic-links
com.google.firebase:firebase-messaging

Vous devrez mettre à jour la version de cette dernière dépendance vers 15.0.2. Cela résout le problème où la version 3.3.0 du plug-in Gradule des services Google indique: La bibliothèque com.google.Android.gms: Play-Services-Measurement-Base est en cours demandé par diverses autres bibliothèques à [[15.0.0,15.0.0], [15.0.2,15.0.2]], mais passe à 15.0.2 ...

Alors, comment puis-je résoudre ces conflits de versions pour que ma compilation soit compilée correctement?

3
OroshiX

Donc, après une journée perdue dans ce numéro, j'ai découvert que la dernière version de play-services-analytics est pas celle qu'ils ont publiée dans leur site web . C'est 16.0.0 et non 15.0.2

Android Studio a dit cela à un collègue en guise d'avertissement, mais le mien n'était pas inquiet à ce sujet. Alors voila, la ligne qui change tout: 

implementation 'com.google.Android.gms:play-services-analytics:16.0.0'
2
OroshiX

J'ai ajouté ceci à mon build.gradle (version de l'application) et cela a fonctionné:

googleServices { disableVersionCheck = true }
1
Otziii

J'ai essayé de revenir à une ancienne version, et cela semblait fonctionner. Ce que j'ai trouvé, c'est que le gradle-wrapper.properties utilisait une version plus ancienne (4.5) au lieu de la version 4.6 que j'avais dans le projet plus récent. Changer cela et revenir à classpath 'com.Android.tools.build:gradle:3.2.0-alpha08' à partir de alpha15 semblaient faire l'affaire. Je pense que vous pouvez utiliser l'alpha 15 si vous le souhaitez, mais pour être sûr de pouvoir utiliser le classpath 'com.Android.tools.build:gradle:3.1.2'. Parallèlement à ces modifications, le firebase-core et le google-gms-services doivent être définis à la version 16.0.0.

0
ZooMagic

Malheureusement, le service Google Play a été arrêté Cette veuve msg est générée et ne jamais exécuter aucun service Google ne

0
Randive sanjivan