2016-05-23 92 views
25

我最近需要在我的項目中使用Google GCM。從它的website它被說:如何解決Firebase API初始化失敗(Android + Firebase)

Firebase雲消息傳遞(FCM)是GCM的新版本。它繼承了 可靠和可擴展的GCM基礎設施,以及新功能!請參閱 瞭解更多信息。如果您將消息集成到新應用程序中,那麼 應以FCM開頭。強烈建議GCM用戶升級到FCM ,以便從現在和未來的新FCM功能中受益。

爲了建立一個新的火力地堡的應用,我已經按照在official website提供的說明,並做了以下內容:

  1. 在Web控制檯創建一個新的火力地堡的應用程序,並得到我的JSON從那裏 - 提供我的應用程序的正確包裝後;
  2. 在頂層項目的gradle文件中,我在依賴項部分添加了classpath 'com.google.gms:google-services:3.0.0';
  3. 在我的模塊的gradle文件中,我添加了: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';下面提供

完全搖籃文件:

頂級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 
} 

模塊的gradle這個文件:

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' 

當我開始我的應用程序我得到這個堆棧跟蹤:

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) 

任何幫助解決這個問題將非常感激! Regards

+1

您的設備上有哪個版本的Google Play服務會崩潰? –

+0

使用此代碼'''getPackageManager()。getPackageInfo(「com.google.android.gms」,0).versionCode;'''我有這個版本:GOOGLE PLAY SERVICE DEVICES VERSION是:9083438.我已經在Firebase和Android中創建了一個新項目,只是一個問候世界,並且工作。是什麼讓我相信我添加的一些圖書館正在搞點東西 –

+1

是的,它是一個奇怪的東西。你是否將你的應用程序通過proguard(如果你不這樣做會發生崩潰)? –

回答

25

那麼,經過很多努力後,我發現是什麼導致了我的問題。基本上我有兩個庫模塊 - 碰巧是我自己的 - 每個模塊都導入不同版本的com.android.support:appcompat-v7.*和谷歌播放服務。讓所有人導入相同的版本,問題消失了。

+7

謝謝。在我的例子中,我使用的是'com.google.firebase:firebase-core:9.0.2',但使用了com.google.android.gms:play-services-gcm:9.2.0'。將play-services-gcm降級到9.0.2爲我解決了這個運行時錯誤。 – gnuf

+0

如何檢查哪些庫模塊正在導入不同的版本? –

+0

如果你從github中取得它們,你可以檢查它們的gradle文件,否則,如果你擁有這個庫,請在源代碼中檢查它。 –

2

我遇到了同樣的問題,但是在我和一些人知道這個問題出現在Gradle即編譯「com.android.support:support-v4:+」後,我剛剛刪除了+並替換了實際的IE版本,編譯「com.android.support:support-v4:23.1.0」,那麼它開始工作

+0

這一個爲我工作。終於... – ZZY

1

對我來說是完全不相關的進口導致該錯誤 編譯「com.aurelhubert:ahbottomnavigation:1.3.3」 當我刪除它時,一切都很好

1

在我的情況下,問題發生的原因是我已經把模塊的依賴項中的「apply插件:'com.google.gms.google-services'」 uild.grandle insteand把它放在文件的末尾。

18

我遇到了同樣的錯誤,在升級火力核心解決:

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

Yayy。完美工作。謝謝。 –

+0

沒有在我的情況下工作的任何其他解決方案? 我試過所有但不工作.. :( –

+0

這工作很酷 – luky

0

你可以用gradle這個命令

./gradlew app:dependencies 

檢查依賴正如埃德加說,確保所有依賴庫具有相同版。 如果沒有,那麼你可以排除使用

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

這種依賴性,並添加扶養自己。

1

我有同樣的問題,通過升級發揮服務-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

注意查看所有的依賴應該有相同的版本

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

在我來說,我忘了在應用程序級別添加此建立

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

所以我就火力科幻底墊-API初始化失敗

0

添加compile 'com.google.android.gms:play-services:9.0.0'到您的應用級的build.gradle文件

0

我,奮鬥畢竟晚上,因爲我的依賴的版本是相同的。添加Firebase Analytics後,當我編輯代碼並運行到我的設備時,我的應用程序崩潰,拒絕以前失敗的類com.google.android.gms上的重新初始化...我必須清理項目並再次運行,然後它工作正常,但如果我編輯代碼將再次崩潰。

我的問題是由「useProguard假」從這個指南https://developer.android.com/studio/build/shrink-code.html

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

但我禁用即時運行所以刪除「useProguard假」固定我的問題導致的。

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