在 android 8+ 上收到来自 firebase 的推送时应用程序崩溃

Posted

技术标签:

【中文标题】在 android 8+ 上收到来自 firebase 的推送时应用程序崩溃【英文标题】:App crashes when received push from firebase on android 8+ 【发布时间】:2018-06-19 13:48:12 【问题描述】:

我最近遇到以下问题:在 android 8 及更高版本的设备上接收推送通知时应用程序崩溃。

这是堆栈跟踪:

#0. Crashed: main
       at com.google.firebase.iid.zzh.void onServiceConnected(android.content.ComponentName,android.os.IBinder)(Unknown Source:4)
       at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1652)
       at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1681)
       at android.os.Handler.handleCallback(Handler.java:790)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:164)
       at android.app.ActivityThread.main(ActivityThread.java:6494)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

--

Fatal Exception: java.lang.ClassCastException: android.app.job.JobServiceEngine$JobInterface cannot be cast to com.google.firebase.iid.zzf
       at com.google.firebase.iid.zzh.void onServiceConnected(android.content.ComponentName,android.os.IBinder)(Unknown Source:4)
       at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1652)
       at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1681)
       at android.os.Handler.handleCallback(Handler.java:790)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:164)
       at android.app.ActivityThread.main(ActivityThread.java:6494)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

这些是库版本:

 //Google services
implementation 'com.google.android.gms:play-services-maps:15.0.1'
implementation 'com.google.android.gms:play-services-auth:15.0.1'
implementation 'com.google.android.gms:play-services-gcm:15.0.1'
implementation 'com.google.android.gms:play-services-location:15.0.1'
implementation 'com.google.android.gms:play-services-analytics:16.0.0'
//Firebase
implementation 'com.google.firebase:firebase-core:16.0.0'
implementation('com.crashlytics.sdk.android:crashlytics:2.9.1@aar') 
    transitive = true;

我尝试降级 firebase,直到有必要降级 Google 服务的版本 - 它没有帮助。

该项目使用了推送提供者的第三方库 (infobip ),很可能是其中的问题。

有人知道吗?

【问题讨论】:

尝试将您的库更新到最新版本,看看我的回答 我内联了尽可能多的信息并改进了语言。 谢谢你,劳伦兹 【参考方案1】:

尝试根据this link 更新您的依赖项并添加firebase-messaging

    implementation 'com.google.firebase:firebase-core:16.0.3'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.5'
    implementation 'com.google.firebase:firebase-core:16.0.3'
    implementation 'com.google.firebase:firebase-ads:15.0.1'
    implementation 'com.google.firebase:firebase-analytics:16.0.3'
    implementation 'com.google.firebase:firebase-appindexing:16.0.1'
    implementation 'com.google.firebase:firebase-auth:16.0.3'
    implementation 'com.google.firebase:firebase-firestore:17.1.0'
    implementation 'com.google.firebase:firebase-functions:16.1.0'
    implementation 'com.google.firebase:firebase-messaging:17.3.0'
    implementation 'com.google.firebase:firebase-storage:16.0.1'
    implementation 'com.google.firebase:firebase-crash:16.2.0'
    implementation 'com.google.firebase:firebase-invites:16.0.3'
    implementation 'com.google.firebase:firebase-perf:16.1.0'
    implementation 'com.google.firebase:firebase-database:16.0.1'
    implementation 'com.google.firebase:firebase-config:16.0.0'

并确保您的项目级grandle中的构建脚本类似于:

buildscript 

    repositories 
        google()
        jcenter()
    
    dependencies 
        classpath 'com.android.tools.build:gradle:3.1.4'
        classpath 'com.google.gms:google-services:4.0.1'
    

此外,如果您有播放服务,请确保您根据 this link 进行更新:

implementation 'com.google.android.gms:play-services-location:15.0.1'
implementation 'com.google.android.gms:play-services-maps:15.0.1'
implementation 'com.google.android.gms:play-services-places:15.0.1'
implementation 'com.google.android.gms:play-services-gcm:15.0.1'

【讨论】:

我定期更新依赖版本,但没有帮助 再次检查我的答案我忘记了一个依赖项 @MaxRailian 也添加了 firebase 消息,我遇到了同样的问题,它已修复 同样的效果。被firebase消息粉碎 我也面临同样的问题。有人对此有解决方案吗?

以上是关于在 android 8+ 上收到来自 firebase 的推送时应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Android - GCM 在打开应用程序时收到来自 gcm 的通知

错误:当有来自 firebase 的通知时,我没有收到铃声

关闭应用程序时,Android 不会收到来自 Parse Push 的推送通知

如果设备收到来自 fcm 的推送通知,如何向处于终止状态的 android 应用程序显示/通信/广播消息

为啥我无法在 Android 设备上接收来自 GCM 的消息

无法从 Android 中 FirebaseMessagingService 的 onMessageReceived 生成通知