Android上的Firebase消息在收到消息时突然崩溃

Android上的Firebase消息在收到消息时突然崩溃,android,firebase,react-native,firebase-cloud-messaging,abstractmethoderror,Android,Firebase,React Native,Firebase Cloud Messaging,Abstractmethoderror,当前正在使用react-native、react-native firebase和react-native推送通知。一切都很好,直到今天firebase消息突然开始导致应用程序崩溃。错误消息如下所示: Process: com.packagename, PID: 30087 java.lang.AbstractMethodError: abstract method "com.google.android.gms.tasks.Task com.google.fireba

当前正在使用react-native、react-native firebase和react-native推送通知。一切都很好,直到今天firebase消息突然开始导致应用程序崩溃。错误消息如下所示:

    Process: com.packagename, PID: 30087
    java.lang.AbstractMethodError: abstract method "com.google.android.gms.tasks.Task com.google.firebase.iid.WithinAppServiceBinder$IntentHandler.zza(android.content.Intent)"
        at com.google.firebase.iid.WithinAppServiceBinder.zza(com.google.firebase:firebase-iid@@20.2.2:9)
        at com.google.firebase.iid.zzaw.zza(com.google.firebase:firebase-iid@@20.2.2:30)
        at com.google.firebase.iid.zzaw.onServiceConnected(com.google.firebase:firebase-iid@@20.2.2:59)
        at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:2067)
        at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:2099)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:8016)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076)
当收到通知但未触发数据消息时,会发生此错误。此外,在导致崩溃之前会接收并处理通知


我认为这个错误可能是由于更改了react本机firebase/app版本引起的,所以我将git上的项目还原为以前的工作版本。但是,在清理和重建之后,我仍然会收到相同的错误。即使在react本机端没有设置通知侦听器,也会发生这种情况,尽管我不确定实际本机代码需要什么。可能是什么问题?我正在使用以前功能正常的react-native firebase/messaging(7.1.5)和react-native firebase/app(7.2.0)版本。

这些版本的问题完全相同。是的,在这之前它们是功能性的 “@react native firebase/app”:“^6.7.1”, “@react native firebase/messaging”:“^6.7.1”

问题已解决:

  • 转到react native push notification/build.gradle
  • 改变 def firebaseVersion=safeExtGet('firebaseVersion','+')) 到 def firebaseVersion=safeExtGet('firebaseVersion','20.2.1')

  • 它选择了不稳定的版本20.2.2给我们带来了各种奇怪的问题。

    我们尝试将
    firebaseMessagingVersion=“20.2.1”
    添加到根项目
    android/build.gradle
    的ext部分,为我们解决了这个问题。我们研究了
    safeExtGet
    方法,发现它将尝试从根项目文件中提取顶级变量

    通过这种方式,我们不需要触摸节点模块

    ext {
            googlePlayServicesVersion = "16.+"
            firebaseVersion = "17.3.4"
            firebaseMessagingVersion = "20.2.1"
        }
    

    编辑2020年9月7日:我们已经发布了
    firebase iid
    firebase messaging
    版本
    20.2.3
    ,并修复了此问题,请升级至最新版本


    [Firebaser here]昨天发布的
    firebase messaging
    firebase iid
    似乎包含可能导致此崩溃的错误。我们正在努力解决这个问题

    目前,最好使用6月18日发布的版本:

    • com.google.firebase:firebase消息:20.2.1
    • com.google.firebase:firebase iid:20.2.1
    我们正在进行修复,希望很快发布新版本。当我们这样做时,我将更新此答案,发布说明将在此处提供:
    这次升级为我解决了这个问题

    implementation 'com.google.firebase:firebase-messaging:20.2.3'
    

    这个案子对我有效:

    implementation "com.google.firebase:firebase-messaging:20.2.3"
    implementation "com.google.firebase:firebase-analytics:17.4.4"
    

    Ref

    此问题已通过此依赖项的最新版本修复。

    哇,真是太感谢了!我为此而疯狂。顺便说一句,对我来说它是firebaseMessagingVersion,以防其他人看到它并有相同的问题@tenkay我必须和你做同样的事情,
    implementation”com.google.firebase:firebase消息:${safeExtGet('firebaseMessagingVersion','20.2.1')}“
    当你重新安装节点模块时,这难道不会被删除吗?此外,它也不会被提交到版本控制(假设您git忽略node_模块)。我是RN新手,可能我误解了什么。是的,它会被删除,在这种情况下,我建议遵循公认的答案,但如果您需要更改节点_模块中的任何内容,补丁包是一个方便的解决方案这也是我最后要做的,我也有同样的问题,这救了我的命。非常感谢。是的,降级成功了。感谢您指出这一点。降级是正确的解决方案,请参阅下面我的答案以了解更多信息。感谢更新@sam stern!我也有这个问题,所以请让我们知道,无论何时您有消息,firebase Iid是否也可以通过将
    firebaseIidVersion=“20.2.1”
    添加到
    android/build.gradle
    ?这对我很有效。我挠了两天的头。