2016-05-23 38 views
25

Recentemente ho avuto bisogno di utilizzare Google GCM nel mio progetto. Dal suo website è detto:Come risolvere l'errore di inizializzazione dell'API Firebase (Android + Firebase)

Firebase Cloud Messaging (FCM) è la nuova versione di GCM. Esso eredita l'infrastruttura GCM affidabile e scalabile, oltre alle nuove funzionalità, ! Vedi le FAQ per saperne di più. Se si sta integrando la messaggistica in una nuova app, inizia con FCM. Si consiglia agli utenti GCM di eseguire l'aggiornamento a FCM, per poter beneficiare delle nuove funzionalità FCM oggi e in futuro.

Al fine di impostare una nuova applicazione Firebase, ho seguito le istruzioni fornite al official website e ha fatto la seguente:

  1. creato una nuova applicazione Firebase nella console web e ottenuto il mio JSON da lì - dopo aver fornito il pacchetto corretto della mia app;
  2. Nel file gradle del progetto di livello superiore, ho aggiunto classpath 'com.google.gms:google-services:3.0.0' nella sezione delle dipendenze;
  3. Nel file gradle del mio modulo, ho aggiunto: compile 'com.google.firebase:firebase-core:9.0.0' compile 'com.google.firebase:firebase-messaging:9.0.0' e nell'ultima riga di esso, ho aggiunto: apply plugin: 'com.google.gms.google-services';
  4. file

completa Gradle sono forniti di seguito:

livello superiore del file Gradle:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.1.0' 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.7' 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     maven { url "https://jitpack.io" } 
    } 
} 

task clean(type: Delete) { 
    delete rootProject.buildDir 
} 

file di Gradle del modulo:

apply plugin: 'com.android.application' 
apply plugin: 'com.neenbedankt.android-apt' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    dexOptions { 
     javaMaxHeapSize "4g" 
    } 

    defaultConfig { 
     applicationId "br.com.gogame" 
     minSdkVersion 21 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
     multiDexEnabled true 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    useLibrary 'org.apache.http.legacy' 
} 

dependencies { 
    ... 
    compile 'com.google.firebase:firebase-core:9.0.0' 
    compile 'com.google.firebase:firebase-messaging:9.0.0' 
    ... 
} 

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

Quando inizio la mia app ottengo questo stacktrace:

05-23 14:04:55.109 13368-13368/br.com.gogame I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.internal.zzqq$zzd> 
05-23 14:04:55.109 13368-13368/br.com.gogame I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.internal.zzqq$zzd> 
05-23 14:04:55.110 13368-13368/br.com.gogame I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.internal.zzqq$zzc> 
05-23 14:04:55.110 13368-13368/br.com.gogame I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.internal.zzqq$zzc> 
05-23 14:04:55.126 13368-13368/br.com.gogame E/FirebaseApp: Firebase API initialization failure. 
                  java.lang.reflect.InvocationTargetException 
                   at java.lang.reflect.Method.invoke(Native Method) 
                   at com.google.firebase.FirebaseApp.zza(Unknown Source) 
                   at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
                   at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
                   at com.google.firebase.FirebaseApp.zzbu(Unknown Source) 
                   at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source) 
                   at android.content.ContentProvider.attachInfo(ContentProvider.java:1748) 
                   at android.content.ContentProvider.attachInfo(ContentProvider.java:1723) 
                   at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source) 
                   at android.app.ActivityThread.installProvider(ActivityThread.java:5174) 
                   at android.app.ActivityThread.installContentProviders(ActivityThread.java:4769) 
                   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4709) 
                   at android.app.ActivityThread.-wrap1(ActivityThread.java) 
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1415) 
                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                   at android.os.Looper.loop(Looper.java:148) 
                   at android.app.ActivityThread.main(ActivityThread.java:5443) 
                   at java.lang.reflect.Method.invoke(Native Method) 
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
                  Caused by: java.lang.NoSuchMethodError: No static method zzy(Ljava/lang/Object;)Ljava/lang/Object; in class Lcom/google/android/gms/common/internal/zzx; or its super classes (declaration of 'com.google.android.gms.common.internal.zzx' appears in /data/app/br.com.gogame-2/base.apk:classes26.dex) 
                   at com.google.android.gms.measurement.internal.zzt.zzaU(Unknown Source) 
                   at com.google.android.gms.measurement.AppMeasurement.getInstance(Unknown Source) 
                   at java.lang.reflect.Method.invoke(Native Method)  
                   at com.google.firebase.FirebaseApp.zza(Unknown Source)  
                   at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)  
                   at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)  
                   at com.google.firebase.FirebaseApp.zzbu(Unknown Source)  
                   at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)  
                   at android.content.ContentProvider.attachInfo(ContentProvider.java:1748)  
                   at android.content.ContentProvider.attachInfo(ContentProvider.java:1723)  
                   at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)  
                   at android.app.ActivityThread.installProvider(ActivityThread.java:5174)  
                   at android.app.ActivityThread.installContentProviders(ActivityThread.java:4769)  
                   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4709)  
                   at android.app.ActivityThread.-wrap1(ActivityThread.java)  
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1415)  
                   at android.os.Handler.dispatchMessage(Handler.java:102)  
                   at android.os.Looper.loop(Looper.java:148)  
                   at android.app.ActivityThread.main(ActivityThread.java:5443)  
                   at java.lang.reflect.Method.invoke(Native Method)  
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)  
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)  
05-23 14:04:55.131 13368-13368/br.com.gogame I/FirebaseInitProvider: FirebaseApp initialization successful 
05-23 14:04:55.133 13368-13368/br.com.gogame E/AndroidRuntime: FATAL EXCEPTION: main 
                   Process: br.com.gogame, PID: 13368 
                   java.lang.NoSuchMethodError: No static method zzy(Ljava/lang/Object;)Ljava/lang/Object; in class Lcom/google/android/gms/common/internal/zzx; or its super classes (declaration of 'com.google.android.gms.common.internal.zzx' appears in /data/app/br.com.gogame-2/base.apk:classes26.dex) 
                    at com.google.android.gms.measurement.internal.zzt.zzaU(Unknown Source) 
                    at com.google.android.gms.measurement.AppMeasurementContentProvider.onCreate(Unknown Source) 
                    at android.content.ContentProvider.attachInfo(ContentProvider.java:1748) 
                    at android.content.ContentProvider.attachInfo(ContentProvider.java:1723) 
                    at android.app.ActivityThread.installProvider(ActivityThread.java:5174) 
                    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4769) 
                    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4709) 
                    at android.app.ActivityThread.-wrap1(ActivityThread.java) 
                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1415) 
                    at android.os.Handler.dispatchMessage(Handler.java:102) 
                    at android.os.Looper.loop(Looper.java:148) 
                    at android.app.ActivityThread.main(ActivityThread.java:5443) 
                    at java.lang.reflect.Method.invoke(Native Method) 
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 

Qualsiasi aiuto per risolvere questo problema sarà molto apprezzato! Saluti

+1

Quale versione dei servizi Google Play disponi sul dispositivo su cui si sta arrestando? –

+0

Utilizzando questo codice '' 'getPackageManager(). GetPackageInfo (" com.google.android.gms ", 0) .versionCode;' '' Ho questa versione: GOOGLE PLAY SERVICE DEVICE VERSION IS: 9083438. I have ha creato un nuovo progetto in Firebase e Android, solo un mondo ciao, e ha funzionato. Ciò che mi fa credere che alcune delle librerie che ho aggiunto si scontrino con qualcosa di –

+1

Sì, è strano. Stai mettendo la tua app tramite proguard (e l'incidente si verifica se non lo fai)? –

risposta

25

Bene, dopo la lotta ho trovato molto spesso quello che stava causando il mio problema. Fondamentalmente avevo due moduli di librerie, che erano di mia proprietà, ognuna delle quali importava diverse versioni di com.android.support:appcompat-v7.* e servizi di gioco di google. Tutti hanno importato la stessa versione e il problema è scomparso.

+7

Grazie. Nel mio caso, stavo usando 'com.google.firebase: firebase-core: 9.0.2' ma' com.google.android.gms: play-services-gcm: 9.2.0'. Il downgrade di play-services-gcm a 9.0.2 ha risolto questo errore di runtime per me. – gnuf

+0

come verificare quali moduli librerie stanno importando versioni differenti? –

+0

Se li stai prendendo da github puoi controllare il loro file gradle, altrimenti, se possiedi la libreria, controllalo nel codice sorgente. –

2

Ho affrontato lo stesso problema, ma dopo un po 'di & d e sono venuto a sapere che il problema era in Gradle ie, compilare "com.android.support:support-v4:+", quindi ho appena rimosso il + e sostituito versione effettiva cioè, compilare "com.android.support:support-v4:23.1.0" quindi ha iniziato a funzionare

+0

Questo funziona per me. Finalmente ... – ZZY

1

Per me un'importazione completamente indipendente ha causato questo errore compilazione 'com.aurelhubert: ahbottomnavigation: 1.3.3' Quando l'ho rimosso tutto andava bene

1

Nel mio caso, il problema si verifica perché avevo messo "applica plugin:" com.google.gms.google-services "" all'interno delle dipendenze dei moduli b uild.grandle insteand di metterlo alla fine del file.

18

Ho incontrato lo stesso errore, risolto con l'aggiornamento Firebase-core:

dependencies {  
    compile 'com.google.firebase:firebase-core:9.0.2' 
} 
+1

Yayy. Ha funzionato perfettamente Grazie. –

+0

non funziona nel mio caso qualche altra soluzione? ho provato soprattutto ma non funziona .. :( –

+0

questo ha funzionato – luky

0

È possibile controllare le dipendenze con il comando Gradle

./gradlew app:dependencies 

Come Edgar ha detto assicurare che tutte le librerie dipendenza è lo stesso versione. Se poi non si può escludere che la dipendenza utilizzando

compile('your dependency') { 
    exclude group: 'lib to be removed' 
} 

E aggiungere che la dipendenza da soli.

1

Ho avuto lo stesso problema, fissato con l'aggiornamento a play-servizi-auth: 10.0.1:

dependencies { 
    ...... 
    //compile 'com.google.android.gms:play-services-auth:9.0.0' 
    compile 'com.google.android.gms:play-services-auth:10.0.1' 
    .... 
} 
8

cura di vedere che tutte le dipendenze devono avere stessa versione

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', 
    { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.2.0' 
    compile 'com.android.support:design:25.2.0' 
    compile 'com.android.support:support-v4:25.2.0' 
    compile 'com.google.firebase:firebase-auth:10.0.1' 
    compile 'com.android.support:cardview-v7:25.2.0' 
    compile 'com.google.firebase:firebase-database:10.0.1' 
    testCompile 'junit:junit:4.12' 
} 
0

In il mio caso ho dimenticato di aggiungere questo con in App Livello costruire

compile 'com.google.firebase:firebase-messaging:9.6.0' 

così ho preso la fi Firebase rebase-api-inizializzazione-fallimento

0

aggiungere compile 'com.google.android.gms:play-services:9.0.0' nel vostro livello di applicazione di file build.gradle

0

Me, dopo la lotta per tutta la notte perché la versione mie dipendenze sono gli stessi. Dopo aver aggiunto Firebase Analytics, quando ho modificato il codice ed eseguito sul mio dispositivo, la mia app si è bloccata con Rifiuta re-init sulla classe precedente fallita com.google.android.gms ... Devo pulire il progetto ed eseguire di nuovo, quindi ha funzionato bene ma verrà nuovamente arrestato se modifico il codice.

Il mio problema è stato causato da "useProguard false" dal seguire questa guida https://developer.android.com/studio/build/shrink-code.html

debug { 
     minifyEnabled true 
     useProguard false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 
       'proguard-rules.pro' 
    } 

ma disabile Immediata Run così Rimuovi "useProguard false" fisso il mio problema.

debug { 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 
       'proguard-rules.pro' 
    } 
Problemi correlati