Wenn ich implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0'
in meinem verwende app/build.gradle
, erhalte ich folgende Fehlermeldung:
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.
Was ich auch in meinem habe, app/build.gradle
ist Folgendes:
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'
Vielleicht unterstützt eine der Bibliotheken, die ich verwende, bereits die In-App-Messaging-Abhängigkeit, und dann wird sie redundant? Vielen Dank.
android
firebase
guava
firebase-in-app-messaging
Jaime Montoya
quelle
quelle
Ich fand die Lösung unter So lösen Sie den bereits vorhandenen Programmtyp: com.google.common.util.concurrent.ListenableFuture? . user2297550 sagte:
Das war die Lösung für mich. Jetzt habe ich das und meine App wird korrekt kompiliert:
implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0' implementation 'com.google.guava:guava:27.0.1-android'
quelle
implementation 'com.google.guava:guava:28.2-android'
github.com/google/guava/releasesimplementation 'com.google.guava:guava:29.0-jre'
Fügen Sie diese Zeile in build.gradle hinzu
implementation 'com.google.guava:guava:27.0.1-android'
quelle
Ich bin auf das gleiche Problem gestoßen. Ich habe die folgende Zeile hinzugefügt
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
Dies funktioniert, aber ich habe ein anderes Problem festgestellt.
Cannot fit requested classes in a single dex file (# methods: 89411 > 65536)
Um diesen Fehler zu beheben, aktivieren Sie multiDex wie folgtdefaultConfig { applicationId "com.techweezy.smartsync" minSdkVersion 19 targetSdkVersion 29 versionCode 5 versionName "1.4" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true //added this line }
Fügen Sie schließlich die folgenden Zeilen hinzu.
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava' implementation 'androidx.multidex:multidex:2.0.1'
quelle
Ich bin gerade darauf gestoßen, als ich mein Flutter-Projekt erstellt habe. Ich bin mir nicht ganz sicher, warum es seinen hässlichen Kopf aufgerichtet hat, aber hier bin ich.
Wenn also irgendwelche Flutter-Entwickler darauf stoßen, hat die Antwort von @Ray Li für mich funktioniert. Die
build.gradle
Datei, die Sie bearbeiten möchten, befindet sich imandroid/app
Ordner (dh NICHT imandroid
Ordner).Fügen Sie das einfach
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
wie folgt zum Abschnitt "Abhängigkeiten" am Ende der Datei hinzu:dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava' }
quelle
Reduzieren Sie doppelte Abhängigkeiten von Ihrem Projekt
Beispielsweise verwenden viele Abhängigkeiten support-v4 und appcompat-v7 als enthaltene Pakete und können dann unterschiedliche Versionen haben. Sie müssen diese Pakete also aus den Abhängigkeiten entfernen und eine Kompilierungsabhängigkeit erstellen.
Dadurch werden alle enthaltenen Bibliotheksmodule entfernt
android { configurations { all*.exclude module: 'appcompat-v7' all*.exclude module: 'support-v4' } }
Oder Sie können jede Abhängigkeit verwalten, um Pakete wie folgt klarer zu entfernen:
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" } }
Alle entfernten Abhängigkeiten müssen außerhalb der Mapbox in einer Kopie deklariert werden, damit sie von allen Bibliotheken verwendet werden.
quelle
build.gradle
Datei öffnen .Nicht ersetzen! Fügen Sie einfach diese Zeile hinzu in
dependencies{}
:implementation 'com.google.guava:guava:<version>-jre'
quelle
Fügen Sie dies Ihrer Gradle-Datei hinzu
configurations { all*.exclude group: 'com.google.guava', module: 'listenablefuture' }
quelle