10

Ich habe ein Android-Projekt, das mit React-Native erstellt wurde und die Google Play-Dienste verwendet (Analytics, Cloud-Messaging, Anzeigen). Ich verwende Firebase nicht explizit überall.Doppelter Eintrag: com/google/firebase/FirebaseApiNotAvailableException.class

Versucht, die Play Services von 8.4.0 zu aktualisieren => 9.2.0. Außerdem wurde der GPS-Klassenpfad 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 auf Firebase nicht explizit überall abhängig bin.

Seit dem Upgrade erhalte ich die folgende Gradle Fehler bauen:

com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/firebase/FirebaseApiNotAvailableException.class

Ich weiß, dass Firebase innerhalb der Google Play-Dienste kommt gebündelt (since 9.0), so dachte ich, etwas anderes Kompilieren und Linken mit eine ältere Version. So bei dem Abhängigkeits Einblick suchen (gradle -q dependencyInsight --configuration compile --dependency firebase) Ich habe bemerkt, dass Feuerbasis-common 9.0.0 ist oben auf 9.2.1 hinzugefügt werden:

enter image description here

Aber ich kann nicht für das Leben von mir finde heraus, was das verursacht.

Antwort

23

Nun - der Schuldige ist React-Native.

Der Hinweis war diese obskure Linie, die auf der Gradle Konsole angezeigt:

Das Update? Erzwingen Sie die RN-Bibliothek-Projekt mit der richtigen Version Firebase zu verknüpfen, indem Sie die folgende Zeile zu seiner build.gradle:

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

Und so:

enter image description here

Als Randnotiz, diese Das Thema hat mich dazu veranlasst, tiefer in das Management der Abhängigkeit zu schauen. Ich habe eine extensive post about resolving common dependency issues geschrieben.

+3

Ich hatte ein anderes Problem, aber diese Antwort hat den Trick :) Fehler: Ausführung fehlgeschlagen für Task ': app: transformClassesWithJarMergingForDebug'. > com.android.build.api.transform.TransformException: java.util.zip.ZipException: Doppeleintrag: com/google/android/gms/common/api/zza.class – SjoerdvGestel

+1

Wow, danke. Ich hätte das nie repariert, ohne diese Antwort zu finden. – marcshilling

+3

Ich hatte das gleiche Problem, aber als ich Firebase-Core-Version 10.0.1 hinzugefügt habe, bekam ich: 'com.android.build.api.transform.TransformException: java.util.zip.ZipException: doppelten Eintrag: com/google/android/gms/common/api/zze.class' Rollt die Version zurück zu 9.2.1 behoben. Danke für deinen Beitrag! – mienaikoe

0

In meinem Fall war ich mit diesem in app/build.gradle:

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

Der Fehler, wenn ich einen signierten APK zu erzeugen versuche, 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 

I modifizierte app/build.gradle durch Entfernen der beiden Linien ich oben erwähnt habe und mit diesem statt:

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

natürlich „Play-Dienste“ ist th Das volle Bündel und nicht eine optimierte Art, dies zu tun. Es wäre am besten, die spezifischen Dienste anzugeben, die benötigt werden (lesen Sie Does "play-services:9.8.0" include "play-services-location:9.8.0"?), aber vorerst behebt es den Fehler in meinem Fall.

1

Das Problem ist, dass Sie beide Plugins im Build verwenden.gradle Datei so entfernen die ein Google-Services-Plug-Play, wie

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

und

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

beide eine Bibliothek So entfernen und dann

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

java.util.zip.ZipException: duplicate entry: com/google/firebase/iid/zzb.class

Add Das ist seine Arbeit. Entfernen Sie Ihre aktuelle Google Play Service-Abhängigkeit a nd gehen Sie zu Datei in androide Studio wählen Sie Modul Einstellung und die Auswahl Abhängigkeit Registerkarte jetzt klicken Sie auf + Symbol und wählen Sie lib Abhängigkeit suchen danach Ihre Play-Service im Studio und fügen Sie

Verwandte Themen