Google 的 Cast MediaNotificationService 中的大量 RemoteServiceExceptions

Jak*_*eam 11 android google-play-services chromecast foreground-service

在过去的大约 24 小时内,我们在 Google 中看到了数千次崩溃MediaNotificationService

Fatal Exception: android.app.RemoteServiceException
    Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{f9a4deb u0 <our package name>/com.google.android.gms.cast.framework.media.MediaNotificationService}
    android.app.ActivityThread$H.handleMessage (ActivityThread.java:1855)
    android.os.Handler.dispatchMessage (Handler.java:106)
    android.os.Looper.loop (Looper.java:214)
    android.app.ActivityThread.main (ActivityThread.java:6986)
    java.lang.reflect.Method.invoke (Method.java)
    com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:494)
    com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1445)
Run Code Online (Sandbox Code Playgroud)

我在创建自己的前台服务时遇到过类似的问题,但由于这是在演员库中,我们无法控制它。

Chromecast 接收器由第三方处理。我们正在使用:

api "com.google.android.gms:play-services-cast:17.0.0"
api "com.google.android.gms:play-services-cast-framework:17.0.0"
Run Code Online (Sandbox Code Playgroud)

潜在线索:

  • 它发生在 OnePlus、华为、三星、谷歌,似乎每个制造商(和操作系统级别)的数量都与其市场份额相关。
  • 崩溃发生在不同设备的不同线路上(例如,上面是 Galaxy S9,S8 则在 1872 线路上崩溃),因此在 Crashlytics 上没有分组在一起。这向我表明这是操作系统/Google Play 服务级别的问题。
  • 崩溃发生在应用程序的所有活动版本中,同时开始。
  • 几个月来,撞车事故的数量一直很少,但在周末突然飙升,而且没有放缓的迹象。

更新:终于设法重现了这一点。在屏幕锁定的情况下长时间投射内容,然后与设备断开连接时会发生崩溃。也许离解决方案更近了一步......

Hea*_*ers 6

它看起来像一个已知问题

问题仅出现在搭载 Android 9 的华为设备上:P20 pro、P30 pro、P20 lite、P30、P20、Honor View 10、Mate 20 pro

Cast SDK 版本:Android Sender 16.2.0(我检查了 Android Sender 17.1.0 的发行说明,但没有修复错误)

这是来自 fabric 的崩溃日志:

Fatal Exception: android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{3ac0035 u0 com.google.android.gms.cast.framework.media.MediaNotificationService}
       at android.app.ActivityThread$H.handleMessage + 2126(ActivityThread.java:2126)
       at android.os.Handler.dispatchMessage + 112(Handler.java:112)
       at android.os.Looper.loop + 216(Looper.java:216)
       at android.app.ActivityThread.main + 7625(ActivityThread.java:7625)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run + 524(RuntimeInit.java:524)
       at com.android.internal.os.ZygoteInit.main + 987(ZygoteInit.java:987)
Run Code Online (Sandbox Code Playgroud)

谷歌的工程师,他说是固定的

我们对此有一个修复程序,应该在下一个 Android Cast 客户端库版本中发布。

他们不知道修复程序何时发布

到目前为止,我们还没有确定下一次发布的确切日期。我们将在此处更新,否则请在此处查看https://developers.google.com/cast/docs/release-notes

发行说明没有提到此修复程序。

如果我有进一步的发现,我会更新这个答案。

更新

这是固定的。请参阅Anjaneesh的答案

更新

有一些问题18.0.0。请参阅rednaz的答案。此外,有关该问题的评论者仍然遇到三星华为平台崩溃的情况,但速度大大降低。我为此提出了一个新问题


小智 5

修复已在 Android Cast SDK 客户端库 v18.0.0 上发布(查看发布说明的第二项:https : //developers.google.com/cast/docs/release-notes#december-5,-2019

更新到 v18.0.0 后应该修复崩溃