web-dev-qa-db-fra.com

Classe en double com.google.common.util.concurrent.ListenableFuture trouvée dans les modules guava-20.0.jar (com.google.guava: guava: 20.0)

Lorsque j'utilise implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0' dans mon app/build.gradle, J'obtiens cette erreur:

Duplicate class com.google.common.util.concurrent.ListenableFuture found in modules guava-20.0.jar (com.google.guava:guava:20.0) and listenablefuture-1.0.jar (com.google.guava:listenablefuture:1.0)

Go to the documentation to learn how to Fix dependency resolution errors.

Ce que j'ai aussi dans mon app/build.gradle est-ce:

implementation 'com.google.Android.gms:play-services-base:16.1.0'
implementation 'com.google.Android.gms:play-services-analytics:16.0.8'
implementation 'com.google.Android.gms:play-services-awareness:16.0.0'
implementation 'com.google.Android.gms:play-services-cast:16.2.0'
implementation 'com.google.Android.gms:play-services-gcm:16.1.0'
implementation 'com.google.Android.gms:play-services-location:16.0.0'
implementation 'com.google.Android.gms:play-services-maps:16.1.0'
implementation 'com.google.firebase:firebase-core:16.0.8'
implementation 'com.google.firebase:firebase-iid:17.1.2'
implementation 'com.google.firebase:firebase-messaging:17.6.0'
implementation 'Android.Arch.work:work-runtime:1.0.1'
implementation 'com.Android.support:multidex:1.0.3'
apply plugin: 'com.google.gms.google-services'

Peut-être que l'une des bibliothèques que j'utilise inclut déjà la prise en charge de la dépendance de messagerie intégrée, puis qu'elle devient redondante? Je vous remercie.

29
Jaime Montoya

J'ai trouvé la solution sur Comment résoudre le type de programme déjà présent: com.google.common.util.concurrent.ListenableFuture? . L'utilisateur 2297550 a déclaré:

J'ai simplement ajouté implementation 'com.google.guava:guava:27.0.1-Android' à la fin de mon fichier de notes d'application et l'erreur a disparu.

C'était la solution pour moi. Maintenant, je l'ai et mon application se compile correctement:

implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0'
implementation 'com.google.guava:guava:27.0.1-Android'
33
Jaime Montoya

Solution 202

Google est au courant de cette erreur et a donc créé un package spécial pour résoudre le conflit.

Ajoutez ceci à votre build.gradle

implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
29
Ray Li

Ajoutez cette ligne dans build.gradle

    implementation 'com.google.guava:guava:27.0.1-Android'
1
Prabhu

Réduisez les dépendances dupliquées de votre projet

Par exemple, de nombreuses dépendances utilisent support-v4 et appcompat-v7 en tant que packages inclus, puis peuvent être de versions différentes, vous devez donc supprimer ces packages de l'intérieur des dépendances et créer une dépendance de compilation.

Cela supprimera tous les modules inclus des bibliothèques

Android {
  configurations {
     all*.exclude module: 'appcompat-v7'
     all*.exclude module: 'support-v4'
  }
}

Ou vous pouvez gérer jeter chaque dépendance à des packages de suppression plus clairs comme celui-ci:

dependencies {
  implementation ('com.mapbox.mapboxsdk:mapbox-Android-sdk:4.2.0@aar') {//depend on your library
     transitive = true
     exclude group: 'com.Android.support', module: 'appcompat-v7'
     exclude group: 'com.Android.support', module: 'recyclerview-v7'
     exclude group: 'com.Android.support', module: 'design'
     exclude group: 'com.Android.support', module: 'support-v4'
     exclude group: 'com.squareup.retrofit2' module: 'retrofit'
     exclude group: 'com.squareup.retrofit2', module: 'retrofit'
     exclude group: 'com.google.code.gson', module: 'gson'
     exclude module: 'guava'//add this line if you have build error "found in modules guava-xxx-Android.jar"
  }
}

Toutes les dépendances supprimées doivent être déclarées en dehors de mapbox en une seule copie pour toutes les bibliothèques qui les utilisent.

0
vishwajit76