Gradle: More than one variant of project :myLib matches the consumer attributes

AndroidAndroid StudioGradleAndroid Gradle-Plugin

Android Problem Overview


A library that I wrote myLib uses RemoteMessage from Firebase, the app itself also uses Firebase.

Using gradle 4.7. Also facing this in 4.4.1.

How to fix it?

project.gradle

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

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        mavenLocal()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

app.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.test.app"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }

    dexOptions {
        preDexLibraries = false
        jumboMode = false
        javaMaxHeapSize "2048M"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    productFlavors {
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:27.1.1'

    implementation 'com.google.android.gms:play-services-gcm:12.0.1'
    implementation 'com.google.android.gms:play-services:12.0.1'
    implementation 'com.google.firebase:firebase-core:12.0.1'
    implementation 'com.google.firebase:firebase-messaging:12.0.1'
    implementation 'com.google.firebase:firebase-crash:12.0.1'

    implementation project(":myLib")
}

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

myLib.gradle

apply plugin: 'com.android.library'

android {
    compileSdkVersion 27



    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    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 group: 'com.google.code.gson', name: 'gson', version: '2.8.2'
    implementation 'com.j256.ormlite:ormlite-core:5.0'
    implementation 'com.j256.ormlite:ormlite-android:5.0'

    implementation 'com.google.firebase:firebase-messaging:12.0.1'
}

Error output from testApp\myLib> gradle clean assembleDebug and testApp\app> gradle clean assembleDebug

> More than one variant of project :myLib matches the > consumer attributes: > > - Configuration ':myLib:debugApiElements' variant android-aidl: > - Found artifactType 'android-aidl' but wasn't required. > - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'. > - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required. > - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and > found compatible value 'Aar'. > - Required org.gradle.usage 'java-api' and found compatible value 'java-api'. > - Configuration ':myLib:debugApiElements' variant android-classes: > - Found artifactType 'android-classes' but wasn't required. > - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'. > - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required. > - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and > found compatible value 'Aar'. > - Required org.gradle.usage 'java-api' and found compatible value 'java-api'. > - Configuration ':myLib:debugApiElements' variant android-manifest: > - Found artifactType 'android-manifest' but wasn't required. > - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'. > - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required. > - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and > found compatible value 'Aar'. > - Required org.gradle.usage 'java-api' and found compatible value 'java-api'. > - Configuration ':myLib:debugApiElements' variant android-renderscript: > - Found artifactType 'android-renderscript' but wasn't required. > - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'. > - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required. > - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and > found compatible value 'Aar'. > - Required org.gradle.usage 'java-api' and found compatible value 'java-api'. > - Configuration ':myLib:debugApiElements' variant jar: > - Found artifactType 'jar' but wasn't required. > - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'. > - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required. > - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and > found compatible value 'Aar'. > - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.

Android Solutions


Solution 1 - Android

The google-services gradle plugin is made to work with Google Play Services and Firebase 15+, but you're using it with version 12.0.1.

The solution is to either:

  • Upgrade your Play Services and Firebase dependencies to version 15+ (note that they have different versions now)
  • Cancel your google-services upgrade to 3.3.0 until you upgrade to 15+, that is, downgrading the gradle plugin to version 3.2.1.

EDIT 1: There's a known issue about using google-services 3.3 in multimodule apps. That means downgrading to google-services to 3.2.1 may be your only option until a new version that fixes the bug is released.

EDIT 2: The bug mentioned above has been fixed in the version 4.0.1 of the google-services gradle plugin! (and the version 4.0.2 also fixes an NPE that occurred in some cases)

BTW, you should move to FCM. GCM will stop working in a not too distant future.

Solution 2 - Android

I got this error when I use google-services:3.3.0.

Downgrade to classpath 'com.google.gms:google-services:3.2.1' in your project .gradle.

It should solve the issue.

Update: It should probably not occur in the current versions.

Solution 3 - Android

Faced with similar issue while upgrading to 3.3.1

Fixed it by downgrading to 3.2.1

We can use firebase version >=15 with 3.2.1

Solution 4 - Android

Below steps worked for me ---

  1. Go to the android/build.gradle file.
  2. Search for jcentre() method.
  3. Shift all the jcenter() methods to the bottom inside its block.

Solution 5 - Android

I faced a similar issue in past few days with.

implementation 'com.google.android.gms:play-services-auth:15.0.0'
implementation 'com.google.firebase:firebase-messaging:15.0.0'

solution was to either downgrade to

implementation 'com.google.android.gms:play-services-auth:12.0.1'
implementation 'com.google.firebase:firebase-messaging:12.0.1'

or consider leaving Google Cloud Services and upgrading to FCM entirely

Note that they have different version numbers you can look it up here

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiontheAnonymousView Question on Stackoverflow
Solution 1 - AndroidLouis CADView Answer on Stackoverflow
Solution 2 - AndroidHenrique MonteView Answer on Stackoverflow
Solution 3 - Androiddddd2011View Answer on Stackoverflow
Solution 4 - AndroidAkhilesh SinhaView Answer on Stackoverflow
Solution 5 - AndroidPooryaView Answer on Stackoverflow