Inserimento duplicato: com / google / firebase / FirebaseApiNotAvailableException.class

Ho un progetto Android creato con React-Native e che utilizza Google Play Services (analisi, messaggistica cloud, annunci). Non sto usando esplicitamente Firebase ovunque.

Ha provato ad aggiornare i servizi di gioco da 8.4.0 => 9.2.0. Inoltre ha aggiornato il path di class GPS.

  • Come condividere Image + Text utilizzando Share Intent in android
  • Come posso centrare il text orizzontalmente e verticalmente in un TextView su Android?
  • Come visualizzare una schermata di benvenuto una volta?
  • Come configurare ListView per cambiare automaticamente l'altezza?
  • SQLite: come limitare il numero di righe in base al timestamp?
  • Come aprire Google Play Store direttamente dalla mia applicazione Android?
  • 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' 

    Notate che non sono esplicitamente dipendenti da Firebase ovunque.

    Fin dal momento dell'aggiornamento ho ottenuto il seguente errore Gradley di generazione:

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

    So che Firebase viene fornito in bundle all'interno di Google Play Services ( dal 9.0 ), quindi ho capito che qualcos'altro sta compilando e collegando una versione precedente. Quindi, guardando l'approfondimento della dipendenza ( gradle -q dependencyInsight --configuration compile --dependency firebase ) ho notato che firebase-common 9.0.0 viene aggiunto al di sopra di 9.2.1:

    immettere qui la descrizione dell'immagine

    Ma non posso per la vita di me scoprire che cosa provoca questo.

  • accedere alla visualizzazione di text all'interno di un frammento di attività
  • Android Studio - non riesce semplicemente a get la barra di azione / il trabocco per funzionare?
  • Stampa dalla tua applicazione Android con printingnte Bluetooth
  • Impostazione di un valore in una class e recupero di un'altra class in Java (applicazione Android)
  • Rendere un'app in modo visualizzato come uno schermo di block Android?
  • Seleziona + text di copia in un TextView?
  • 4 Solutions collect form web for “Inserimento duplicato: com / google / firebase / FirebaseApiNotAvailableException.class”

    Beh – il colpevole è React-Native.

    Il suggerimento era questa linea oscura che appare sulla consolle Gradle:

    plugin google-services non è stato in grado di rilevare alcuna versione per com.google.android.gms o com.google.firebase, la versione predefinita: 9.0.0 verrà utilizzata.

    La correzione? Fornire il progetto della libreria RN a collegarsi alla versione Firebase corretta, aggiungendo la seguente row al suo build.gradle:

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

    E quindi:

    immettere qui la descrizione dell'immagine

    Come una nota laterale, questo problema mi ha spinto a guardare più in profondità nella gestione delle dependencies gradle. Ho scritto un ampio post sulla risoluzione di problemi comuni di dipendenza .

    Nel mio caso, l'ho usato 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' 

    L'errore quando stavo cercando di generare un APK firmato era:

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

    Ho modificato app / build.gradle rimuovendo le due righe che ho citato sopra e usando invece questo:

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

    Naturalmente "play-services" è il bundle completo e non un modo ottimizzato per farlo. Sarebbe meglio specificare i servizi specifici necessari (leggere "Play-services: 9.8.0" include "play-services-location: 9.8.0"? ), Ma adesso corre l'errore nel mio caso.

    Il problema è che utilizzi entrambi i plugin nel file build.gradle per rimuovere il plugin Google Play Services, ad esempio

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

    e

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

    Così rimuovere entrambi di una libreria e quindi aggiungere

     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: inserimento duplicato: com / google / firebase / iid / zzb.class

    segui questo il suo lavoro.remova la tua attuale dipendenza dal servizio di gioco google e vai al file in android Studio seleziona l'impostazione del module e la scheda di dipendenza seleziona ora clicca sull'icona + e seleziona la dipendenza lib dopo che cerca il tuo servizio di gioco in studio e aggiungi

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.