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.
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'
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'
Ajoutez cette ligne dans build.gradle
implementation 'com.google.guava:guava:27.0.1-Android'
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.