Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In project 'app' a resolved Google Play services library dependency depends on another at an exact version

Trying to create a simple app with FireStore and Google Authentication. Having problem with the gradle:

In project 'app' a resolved Google Play services library dependency depends on another at an exact version (e.g. "[15.0. 1]", but isn't being resolved to that version. Behavior exhibited by the library will be unknown.

Dependency failing: com.google.android.gms:play-services-flags:15.0.1 -> com.google.android.gms:play-services-basement@[ 15.0.1], but play-services-basement version was 16.0.1.

The following dependencies are project dependencies that are direct or have transitive dependencies that lead to the art ifact with the issue. -- Project 'app' depends onto com.google.firebase:[email protected] -- Project 'app' depends onto com.firebaseui:[email protected]

For extended debugging info execute Gradle from the command line with ./gradlew --info :app:assembleDebug to see the dep endency paths to the artifact. This error message came from the google-services Gradle plugin, report issues at https:// github.com/google/play-services-plugins and disable by adding "googleServices { disableVersionCheck = false }" to your b uild.gradle file.

    apply plugin: 'com.android.application'      android {         compileSdkVersion 27         defaultConfig {             applicationId "myapp.com"             minSdkVersion 19             targetSdkVersion 27             versionCode 11             versionName "1.1"             testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"             multiDexEnabled true         }         buildTypes {             release {                 minifyEnabled false                 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'             }         }     }      dependencies {         implementation fileTree(dir: 'libs', include: ['*.jar'])         implementation 'com.android.support:appcompat-v7:27.1.1'         implementation 'com.android.support.constraint:constraint-layout:1.1.3'         testImplementation 'junit:junit:4.12'         androidTestImplementation 'com.android.support.test:runner:1.0.2'         androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'         implementation 'com.google.firebase:firebase-firestore:17.1.5'          implementation 'com.firebaseui:firebase-ui-auth:4.2.0'      }      apply plugin: 'com.google.gms.google-services'     com.google.gms.googleservices.GoogleServicesPlugin 

Project gradle:

buildscript {      repositories {         google()         jcenter()     }     dependencies {         classpath 'com.android.tools.build:gradle:3.2.1'          classpath 'com.google.gms:google-services:4.2.0'      } } 

Can somebody help me?

like image 672
live-love Avatar asked Jan 05 '19 18:01

live-love


2 Answers

There are many answers here for individual solutions that do not really get down to the problem. Here is how to solve this in general:

As the original log output suggests, it is useful to run the build in the terminal with the following command:

./gradlew --info assembleDebug

This will give you a list of all dependencies that are involved in the conflict. It looks similar to this (I removed the package name stuff to make it a bit more readable):

Dependency Resolution Help: Displaying all currently known paths to any version of the dependency: Artifact(groupId=com.google.firebase, artifactId=firebase-iid)  -- task/module dep -> [email protected] ---- firebase-analytics:17.2.0 library depends -> [email protected] ------ play-services-measurement-api:17.2.0 library depends -> [email protected]  -- task/module dep -> [email protected] ---- firebase-core:17.2.0 library depends -> [email protected] ------ firebase-analytics:17.2.0 library depends -> [email protected] -------- play-services-measurement-api:17.2.0 library depends -> [email protected]  -- task/module dep -> [email protected] ---- play-services-measurement-api:17.2.0 library depends -> [email protected]  -- task/module dep -> [email protected]  -- task/module dep -> [email protected] ---- firebase-messaging:17.1.0 library depends -> firebase-iid@[16.2.0]  -- task/module dep -> com.pressenger:[email protected] ---- com.pressenger:sdk:4.8.0 library depends -> [email protected] ------ firebase-messaging:17.1.0 library depends -> firebase-iid@[16.2.0] 

From this list you get to know 2 things:

  1. Where is the conflicting depedency found
  2. What versions of the conflicting dependency are set up

In my case the conflicting dependency is firebase-iid: It's either @19.0.0 or @16.2.0

To fix this you must define the top-level dependency of the wrong firebase-iid explicitly in your build.gralde.

So in the upper log you can see that there are 2 examples of an out-dated version of [email protected]. One comes from -- task/module dep -> [email protected] the other one from a third-party library (pressenger). We don't have influence on the third-party library, so nothing to do here. But for the other dependency, we have to declare it explicitly with the correct version:

implementation 'com.google.firebase:firebase-messaging:20.0.0'

Now the build works again. Happy ending :)

like image 107
muetzenflo Avatar answered Sep 19 '22 16:09

muetzenflo


There's a known bug with Google Services 4.2.0 that may cause this. Downgrading your google-services version to 4.1.0 in your project's build.gradle may resolve the issue

buildscript {     dependencies {         classpath 'com.google.gms:google-services:4.1.0' //decreased from 4.2.0     } } 
like image 29
Cody Avatar answered Sep 17 '22 16:09

Cody