Gradle: Plus d’une variante du projet: myLib correspond aux atsortingbuts du consommateur

Une bibliothèque que j’ai écrite myLib utilise RemoteMessage de Firebase , l’application elle-même utilise également Firebase .

Utiliser Gradle 4.7. Aussi face à cela dans 4.4.1.

Comment le réparer?

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 { comstackSdkVersion 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' } } comstackOptions { 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 { comstackSdkVersion 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' } 

Erreur générée par testApp\myLib> gradle clean assembleDebug et testApp\app> gradle clean assembleDebug

Plus d’une variante du projet: myLib correspond aux atsortingbuts du consommateur:

  • Configuration ‘: myLib: variante de debugApiElements android-aidl:
    • ArtefactType trouvé ‘android-aidl’ mais n’était pas requirejs.
    • Requis com.android.build.api.atsortingbutes.BuildTypeAttr ‘debug’ et a trouvé la valeur compatible ‘debug’.
    • Vous avez trouvé com.android.build.api.atsortingbutes.VariantAttr ‘debug’ mais ce n’était pas nécessaire.
    • Requis com.android.build.gradle.internal.dependency.AndroidTypeAttr ‘Aar’ et a trouvé la valeur compatible ‘Aar’.
    • Requis org.gradle.usage ‘java-api’ et a trouvé la valeur compatible ‘java-api’.
  • Configuration ‘: myLib: variante des classes android debugApiElements:
    • ArtefactType trouvé ‘android-classes’ mais n’était pas requirejs.
    • Requis com.android.build.api.atsortingbutes.BuildTypeAttr ‘debug’ et a trouvé la valeur compatible ‘debug’.
    • Vous avez trouvé com.android.build.api.atsortingbutes.VariantAttr ‘debug’ mais ce n’était pas nécessaire.
    • Requis com.android.build.gradle.internal.dependency.AndroidTypeAttr ‘Aar’ et a trouvé la valeur compatible ‘Aar’.
    • Requis org.gradle.usage ‘java-api’ et a trouvé la valeur compatible ‘java-api’.
  • Configuration ‘: myLib: variante du manifeste androïde de debugApiElements:
    • Trouvé artefactType ‘manifeste Android’ mais n’était pas nécessaire.
    • Requis com.android.build.api.atsortingbutes.BuildTypeAttr ‘debug’ et a trouvé la valeur compatible ‘debug’.
    • Vous avez trouvé com.android.build.api.atsortingbutes.VariantAttr ‘debug’ mais ce n’était pas nécessaire.
    • Requis com.android.build.gradle.internal.dependency.AndroidTypeAttr ‘Aar’ et a trouvé la valeur compatible ‘Aar’.
    • Requis org.gradle.usage ‘java-api’ et a trouvé la valeur compatible ‘java-api’.
  • Configuration ‘: myLib: variante de debugApiElements android-renderscript:
    • Trouvé artefactType ‘android-renderscript’ mais n’était pas nécessaire.
    • Requis com.android.build.api.atsortingbutes.BuildTypeAttr ‘debug’ et a trouvé la valeur compatible ‘debug’.
    • Vous avez trouvé com.android.build.api.atsortingbutes.VariantAttr ‘debug’ mais ce n’était pas nécessaire.
    • Requis com.android.build.gradle.internal.dependency.AndroidTypeAttr ‘Aar’ et a trouvé la valeur compatible ‘Aar’.
    • Requis org.gradle.usage ‘java-api’ et a trouvé la valeur compatible ‘java-api’.
  • Configuration ‘: myLib: variante du fichier JAR de debugApiElements:
    • Trouvé artefactType ‘jar’ mais n’était pas nécessaire.
    • Requis com.android.build.api.atsortingbutes.BuildTypeAttr ‘debug’ et a trouvé la valeur compatible ‘debug’.
    • Vous avez trouvé com.android.build.api.atsortingbutes.VariantAttr ‘debug’ mais ce n’était pas nécessaire.
    • Requis com.android.build.gradle.internal.dependency.AndroidTypeAttr ‘Aar’ et a trouvé la valeur compatible ‘Aar’.
    • Requis org.gradle.usage ‘java-api’ et a trouvé la valeur compatible ‘java-api’.

Le plug-in google-services gradle est conçu pour fonctionner avec les services Google Play et Firebase 15+ , mais vous l’utilisez avec la version 12.0.1 .

La solution consiste soit à:

  • Mettez à niveau vos dépendances Play Services et Firebase vers la version 15+ (notez qu’elles ont maintenant des versions différentes)
  • Annulez la mise à niveau de google-services à la version 3.3.0 jusqu’à ce que vous passiez à 15+ , c’est-à-dire à la version 3.2.1 du plug-in Gradle.

EDIT 1 : Il existe un problème connu concernant l’utilisation de google-services 3.3 dans les applications multimodules . Cela signifie que la mise à niveau vers google-services vers 3.2.1 peut être votre seule option jusqu’à ce qu’une nouvelle version qui corrige le bogue soit publiée.

EDIT 2 : Le bogue mentionné ci-dessus a été corrigé dans la version 4.0.1 du plugin google-services gradle! (et la version 4.0.2 corrige également un NPE survenu dans certains cas)

BTW, vous devriez passer à FCM. GCM cessera de travailler dans un avenir pas trop lointain.

J’ai eu cette erreur lorsque j’utilise google-services: 3.3.0.

Rétrogradez à classpath 'com.google.gms:google-services:3.2.1' dans votre projet .gradle.

Cela devrait résoudre le problème.

Face à un problème similaire lors de la mise à niveau vers 3.3.1

Correction en rétrogradant à 3.2.1

Nous pouvons utiliser la version firebase> = 15 avec 3.2.1

J’ai fait face à un problème similaire ces derniers jours avec.

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

la solution était soit de déclasser à

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

ou envisagez de quitter Google Cloud Services et de passer entièrement à FCM

Notez qu’ils ont des numéros de version différents que vous pouvez rechercher ici