10

Mam Android projekt zbudowany z React rodzimymi i zatrudniania Usługi Google Play (Analytics Cloud Messaging, reklamy). Nie stosuję w żaden sposób Firebase.Duplikat wpis: com/google/Firebase/FirebaseApiNotAvailableException.class

Tried modernizacji spektaklu Services z 8.4.0 => 9.2.0. Zmodernizowano także ścieżkę klas GPS.

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' 

Zauważ, że nie jestem wyraźnie w zależności od Firebase wszędzie.

Odkąd uaktualnieniu Dostaję następujący błąd: Gradle budować

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

wiem, że Firebase jest dostarczany w ramach usługi Google Play (since 9.0), więc pomyślałem coś innego jest kompilowania i łączenie z starsza wersja. Więc patrząc na spostrzeżeniu zależność (gradle -q dependencyInsight --configuration compile --dependency firebase) Zauważyłem, że Firebase-common 9.0.0 jest dodawana na szczycie 9.2.1:

enter image description here

Ale nie mogę dla życia mnie dowiedzieć się, co to powoduje.

Odpowiedz

23

Cóż - winowajcą jest React-Native.

Podpowiedź było to niejasne linię, która pojawi się na konsoli Gradle:

Rozwiązaniem? Zmusić projektu biblioteki RN połączyć z odpowiednią wersją Firebase, dodając następującą linię do jej build.gradle:

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

I tak:

enter image description here

Jako marginesie tego, problem spowodował, że zajrzałem głębiej w zarządzanie zależnością gradle. Napisałem numer extensive post about resolving common dependency issues.

+3

Mam inny problem, ale ta odpowiedź zrobiła lewę :) Błąd: Wykonanie nie powiodło się dla zadania ": app: transformClassesWithJarMergingForDebug". > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplikat wpisu: com/google/android/gms/common/api/zza.class – SjoerdvGestel

+1

Wow, dziękuję. Nigdy nie naprawiłbym tego bez znalezienia tej odpowiedzi. – marcshilling

+3

Miałem ten sam problem, ale kiedy dodałem wersję podstawową firebase 10.0.1, otrzymywałem: 'com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplikat wpisu: com/google/android/gms/common/api/zze.class' Przywrócenie wersji z powrotem do wersji 9.2.1. Dziękuję za Twój post! – mienaikoe

0

W moim przypadku, był przy tym w 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' 

Błąd kiedy próbuje wygenerować Signed APK było:

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 zmodyfikowane APP/build.gradle odkręcając dwie linie wspomniałem powyżej i stosując zamiast tego:

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

oczywiście „play-usług” jest th pełny pakiet, a nie zoptymalizowany sposób na zrobienie tego. Najlepiej byłoby określić konkretne usługi, które są wymagane (czytaj Does "play-services:9.8.0" include "play-services-location:9.8.0"?), ale na razie naprawia błąd w moim przypadku.

1

Problem polega na tym, że używasz obu wtyczek w kompilacji.Gradle plik więc usunąć jeden Google Play wtyczki Services, jak

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

i

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

Więc usunąć zarówno z jednej biblioteki, a następnie dodać

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