Gradle: Mehr als eine Projektvariante: myLib entspricht den Verbraucherattributen

81

Eine Bibliothek, die ich geschrieben habe, myLibverwendet RemoteMessagevon Firebase, die App selbst verwendet auch Firebase.

Gradle verwenden 4.7. Auch in 4.4.1.

Wie man es repariert?

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

Fehlerausgabe von testApp\myLib> gradle clean assembleDebugundtestApp\app> gradle clean assembleDebug

Mehr als eine Projektvariante: myLib entspricht den Verbraucherattributen:

  • Konfiguration ': myLib: debugApiElements' Variante android-aidl:
    • Artefakttyp 'android-aidl' gefunden, aber nicht erforderlich.
    • Erforderlich com.android.build.api.attributes.BuildTypeAttr 'debug' und kompatibler Wert 'debug' gefunden.
    • Com.android.build.api.attributes.VariantAttr 'debug' gefunden, aber nicht erforderlich.
    • Erforderlich com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' und gefundener kompatibler Wert 'Aar'.
    • Erforderlich org.gradle.usage 'java-api' und gefundener kompatibler Wert 'java-api'.
  • Konfiguration ': myLib: debugApiElements' Variante Android-Klassen:
    • Artefakttyp 'Android-Klassen' gefunden, aber nicht erforderlich.
    • Erforderlich com.android.build.api.attributes.BuildTypeAttr 'debug' und kompatibler Wert 'debug' gefunden.
    • Com.android.build.api.attributes.VariantAttr 'debug' gefunden, aber nicht erforderlich.
    • Erforderlich com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' und gefundener kompatibler Wert 'Aar'.
    • Erforderlich org.gradle.usage 'java-api' und gefundener kompatibler Wert 'java-api'.
  • Konfiguration ': myLib: debugApiElements' Variante android-manifest:
    • Artefakttyp 'Android-Manifest' gefunden, aber nicht erforderlich.
    • Erforderlich com.android.build.api.attributes.BuildTypeAttr 'debug' und kompatibler Wert 'debug' gefunden.
    • Com.android.build.api.attributes.VariantAttr 'debug' gefunden, aber nicht erforderlich.
    • Erforderlich com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' und gefundener kompatibler Wert 'Aar'.
    • Erforderlich org.gradle.usage 'java-api' und gefundener kompatibler Wert 'java-api'.
  • Konfiguration ': myLib: debugApiElements' Variante android-renderscript:
    • Artefakttyp 'android-renderscript' gefunden, aber nicht erforderlich.
    • Erforderlich com.android.build.api.attributes.BuildTypeAttr 'debug' und kompatibler Wert 'debug' gefunden.
    • Com.android.build.api.attributes.VariantAttr 'debug' gefunden, aber nicht erforderlich.
    • Erforderlich com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' und gefundener kompatibler Wert 'Aar'.
    • Erforderlich org.gradle.usage 'java-api' und gefundener kompatibler Wert 'java-api'.
  • Konfiguration ': myLib: debugApiElements' Variante jar:
    • Artefakttyp 'jar' gefunden, aber nicht erforderlich.
    • Erforderlich com.android.build.api.attributes.BuildTypeAttr 'debug' und kompatibler Wert 'debug' gefunden.
    • Com.android.build.api.attributes.VariantAttr 'debug' gefunden, aber nicht erforderlich.
    • Erforderlich com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' und gefundener kompatibler Wert 'Aar'.
    • Erforderlich org.gradle.usage 'java-api' und gefundener kompatibler Wert 'java-api'.
theAnonymous
quelle
12
Die Verwendung von Google Services 3.2.1 behebt dieses Problem.
Paul Woitaschek
1
Du hast mein Leben gerettet @PaulWoitaschek
NullPointer
2
yeh - dies scheint ein Fehler mit com.google.gms zu sein: google-services: 3.3.0. Herabstufung auf 3.2.1 für mich gelöst
Zayin Krige
1
Der Google-Dienst wurde jetzt auf 4.0.0 aktualisiert. Siehe developer.google.com/android/guides/…
Peter Zhao

Antworten:

86

Das google-servicesGradle-Plugin funktioniert mit Google Play Services und Firebase 15+, Sie verwenden es jedoch mit der Version 12.0.1.

Die Lösung ist entweder:

BEARBEITEN 1 : Es ist ein Problem bei der Verwendung google-services 3.3in Multimodul-Apps bekannt . Das bedeutet, dass ein Downgrade auf google-servicesauf 3.2.1möglicherweise Ihre einzige Option ist, bis eine neue Version veröffentlicht wird, die den Fehler behebt.

EDIT 2 : Der oben erwähnte Fehler wurde in der Version 4.0.1des google-servicesGradle Plugins behoben! (und die Version 4.0.2behebt auch eine NPE, die in einigen Fällen aufgetreten ist)

Übrigens sollten Sie zu FCM wechseln. GCM wird in nicht allzu ferner Zukunft nicht mehr funktionieren.

Louis CAD
quelle
Wie habe ich auf Ionic 3 integriert? Vielen Dank!
Wilfredonoyola
1
@ Wilfredonoyola Dies funktioniert mit Gradle. Wenn Sie gradle für Ihr Ionic-Projekt verwenden, funktioniert es genauso. Ansonsten ist es einfach überhaupt nicht verwandt.
Louis CAD
Ja, ionisches 3 ist mit Gradle verwandt. Derzeit habe ich viele Fehler, wenn ich einen neuen Build auf Android mache.
Wilfredonoyola
@ Wilfredonoyola Dann posten Sie einfach Ihre eigene Frage, wenn meine Antwort und Ihre Suche nicht ausreichen, um Ihre Build-Probleme zu lösen
Louis CAD
28

Ich habe diesen Fehler erhalten, wenn ich Google-Dienste verwende: 3.3.0.

Downgrade auf classpath 'com.google.gms:google-services:3.2.1'in Ihrem Projekt .gradle.

Es sollte das Problem lösen.

Update: Es sollte wahrscheinlich nicht in den aktuellen Versionen auftreten.

Henrique Monte
quelle
2
Ich bin auch darauf gestoßen, nachdem ich auf 3.3.0 aktualisiert habe, aber wir können kein Downgrade durchführen, da dies für neue Play-Services / Firebase-Versionen> = 15 erforderlich ist
hardysim
1
@hardysim Sie sollten in der Lage sein, Firebase-Version> = 15 mit 3.2.1
Sree
7

Beim Upgrade auf 3.3.1 mit ähnlichen Problemen konfrontiert

Es wurde durch Downgrade auf 3.2.1 behoben

Wir können die Firebase-Version> = 15 mit 3.2.1 verwenden

dddd2011
quelle
1

Die folgenden Schritte haben bei mir funktioniert ---

  1. Gehen Sie zur Datei android / build.gradle.
  2. Suchen nach jcentre() Methode.
  3. Verschieben Sie alle jcenter()Methoden innerhalb des Blocks nach unten.
Akhilesh Sinha
quelle
Hat auch für mich gearbeitet. Unglaublich 😯
David Leuliette
0

Ich hatte in den letzten Tagen ein ähnliches Problem mit.

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

Lösung war entweder ein Downgrade auf

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

oder verlassen Sie Google Cloud Services und führen Sie ein vollständiges Upgrade auf FCM durch

Beachten Sie, dass sie unterschiedliche Versionsnummern haben. Sie können sie hier nachschlagen

Poorya
quelle