Cryptic FCM 10.2.0失败 - FirebaseInitProvider,NoSuchMethodError

时间:2017-03-20 08:20:40

标签: android firebase firebase-cloud-messaging nosuchmethoderror

我正在尝试将Firebase云消息传递添加到我的应用程序但没有成功,因为我得到以下异常:

1 27336-27336/com.company.here E/AndroidRuntime: FATAL EXCEPTION: main
                                                                        Process: com.company.here, PID: 27336
                                                                        java.lang.NoSuchMethodError: No static method zzb(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; in class Lcom/google/android/gms/common/internal/zzaa; or its super classes (declaration of 'com.google.android.gms.common.internal.zzaa' appears in /data/app/com.company.here.debug-1/base.apk)
                                                                            at com.google.firebase.provider.FirebaseInitProvider.zza(Unknown Source)
                                                                            at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
                                                                            at android.app.ActivityThread.installProvider(ActivityThread.java:5883)
                                                                            at android.app.ActivityThread.installContentProviders(ActivityThread.java:5475)
                                                                            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5414)
                                                                            at android.app.ActivityThread.-wrap2(ActivityThread.java)
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1546)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                            at android.os.Looper.loop(Looper.java:154)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:6154)
                                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

这是我到目前为止所检查的内容:

  • google-services在项目gradle文件中设置为3.0.0
  • 我只有一个与firebase相关的依赖项,即10.2.0
  • 我启用了插孔,所以我可以使用lambdas
  • 我将ReactiveAndroid和Retrofit纳入项目,也许他们的互动很糟糕?这说我在运行./gradlew app:dependencies
  • 时没有看到任何可疑之处
  • 尝试multiDexEnabled = true,没有什么区别
  • 有一个用于调试版本的自定义applicationIdSuffix,尝试删除它但它也没有什么区别
  • apply plug: 'com.google.gms.google-services的定位似乎并不重要,目前在gradle文件的末尾

可能导致这种情况的原因是什么?据我所知,FirebaseInitProvider正在调用来自attachInfo的内部静态方法,后者反过来尝试调用一个似乎不存在的SDK私有类的静态方法。

2 个答案:

答案 0 :(得分:0)

所以这很奇怪:

除了我运行clean project命令,添加了firebase-core依赖关系然后重新构建,一切都开始工作之外,我的设置从昨晚开始没有变化。

我曾假设firebase-messaging单独删除了所有依赖项,但这违反了设置指南,如果内部类FirebaseInitProvider正在尝试访问,则崩溃是有意义的firebase-core依赖。

答案 1 :(得分:0)

您的应用级build.gradle可能与您的play-services个依赖关系和Firebase不匹配。

在项目级别的build.gradle中使用3.0.0的google服务很好(com.google.gms:google-services:3.0.0)。

例如,如果您有依赖项com.google.android.gms:play-services-maps:10.2.0com.google.firebase:firebase-invites:10.2.0,则它们必须是同一版本10.2.0