wake-up-neo.com

Doppelter Eintrag: com/google/firebase/FirebaseApiNotAvailableException.class

Ich habe ein Android-Projekt, das mit React-Native erstellt wurde und Google Play-Dienste (Analyse, Cloud-Messaging, Anzeigen) verwendet. Ich benutze Firebase nirgendwo explizit.

Versucht, die Play Services von 8.4.0 zu aktualisieren => 9.2.0. Auch der GPS-Klassenpfad wurde aktualisiert.

buildscript {
    dependencies {
        classpath 'com.google.gms:google-services:3.0.0'

...

dependencies {
    compile 'com.google.Android.gms:play-services-analytics:9.2.1'
    compile 'com.google.Android.gms:play-services-ads:9.2.1'
    compile 'com.google.Android.gms:play-services-base:9.2.1'
    compile 'com.google.Android.gms:play-services-gcm:9.2.1'

Beachten Sie, dass ich nirgendwo explizit von Firebase abhängig bin. 

Seit dem Upgrade bekomme ich den folgenden Gradle-Buildfehler:

com.Android.build.api.transform.TransformException: Java.util.Zip.ZipException: doppelter Eintrag: com/google/firebase/FirebaseApiNotAvailableException.class

Ich weiß, dass Firebase in den Google Play Services gebündelt ist ( seit 9.0 ), also dachte ich, dass etwas anderes kompiliert und mit einer älteren Version verlinkt wird ... Da habe ich die Abhängigkeit von Insights (gradle -q dependencyInsight --configuration compile --dependency firebase) gesehen dass Firebase-Common 9.0.0 zusätzlich zu 9.2.1 hinzugefügt wird:

 enter image description here

Aber ich kann nicht für mein Leben herausfinden, was dies verursacht.

10
Vaiden

Nun, der Täter ist React-Native.

Der Hinweis war diese dunkle Linie, die auf der Gradle-Konsole angezeigt wird:

das google-services-Plugin konnte keine Version für .__ erkennen. com.google.Android.gms oder com.google.firebase, Standardversion: 9.0.0 wird verwendet.

Die Reparatur? Erzwingen Sie die Verknüpfung des RN-Bibliotheksprojekts mit der korrekten Firebase-Version, indem Sie die folgende Zeile zu build.gradle hinzufügen:

compile 'com.google.firebase:firebase-core:9.2.1'

Und somit:

enter image description here

Als Randbemerkung hat dieses Problem mich dazu veranlasst, tiefer in das gradle Abhängigkeitsmanagement zu blicken. Ich habe einen ausführlicher Beitrag zur Lösung allgemeiner Abhängigkeiten geschrieben.

23
Vaiden

Das Problem ist, dass Sie beide Plugins in der build.gradle -Datei verwenden 

apply plugin: 'com.google.gms.google-services'

und 

compile 'com.google.Android.gms:play-services:11.0.2'

Entfernen Sie also beide Bibliotheken und fügen Sie sie hinzu

packagingOptions {
    exclude 'META-INF/NOTICE' // It is not include NOTICE file
    exclude 'META-INF/LICENSE' // It is not include LICENSE file
}

Java.util.Zip.ZipException: doppelter Eintrag: com/google/firebase/iid/zzb.class

folgen Sie dieser Arbeit. Entfernen Sie Ihre aktuelle Google Play-Dienstabhängigkeit, und wählen Sie im Android Studio die Option zum Auswählen des Moduls aus. Klicken Sie dann auf das Symbol + und wählen Sie die Option lib

0
AMIT RANJAN

In meinem Fall habe ich dies in app/build.gradle verwendet:

compile 'com.google.Android.gms:play-services-location:9.8.0'
compile 'com.google.Android.gms:play-services-maps:9.8.0'

Der Fehler beim Versuch, eine signierte APK zu generieren, war:

Error:Execution failed for task ':app:transformClassesWithJarMergingForRelease'.
> com.Android.build.api.transform.TransformException: Java.util.Zip.ZipException: duplicate entry: com/google/firebase/FirebaseApiNotAvailableException.class

Ich habe app/build.gradle geändert, indem ich die beiden oben genannten Zeilen entfernt habe und stattdessen diese verwendet habe:

compile 'com.google.Android.gms:play-services:9.8.0'

Natürlich ist "play-services" das komplette Paket und keine optimierte Möglichkeit, dies zu tun. Es ist am besten, die spezifischen Dienste anzugeben, die erforderlich sind (read Enthält "play-services: 9.8.0" "play-services-location: 9.8.0"? ), behebt den Fehler jedoch vorerst in meinem Fall.

0
Jaime Montoya