Google 的 MediaNotificationService 中存在大量 RemoteServiceExceptions

Large number of RemoteServiceExceptions in Google's cast MediaNotificationService

在过去的 ~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)

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

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

api "com.google.android.gms:play-services-cast:17.0.0"
api "com.google.android.gms:play-services-cast-framework:17.0.0"

潜在线索:

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

看起来像a known issue:

Issue occured only on HUAWEI devices with Android 9 : P20 pro, P30 pro, P20 lite, P30, P20, Honor View 10, Mate 20 pro

Cast SDK version : Android Sender 16.2.0 (I checked release notes of Android Sender 17.1.0 but no bug fixes)

Here is the crash log from 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)

a Google engineer says is fixed:

We have a fix for this and that should be released by the next Android Cast client library release.

但是they don't know when the fix will be released:

So far we don't have a solid date when the next release will be scheduled. We will update it here or else please do check here https://developers.google.com/cast/docs/release-notes

release notes 没有提及对此的修复。

如果我发现任何进一步的问题,我会更新这个答案。

更新

这是固定的。参见

更新

18.0.0 存在一些问题。参见 。 此外,关于此问题的评论者仍然遇到 Samsung and Huawei platforms, but at greatly decreased rates. I filed a new issue 的崩溃。

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

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

我们也遇到了这个问题非常 相似的症状。我们正在使用 cast SDK 版本 16.1.2

  • 仅在 Android 8 及更高版本上发生。好像跟后台执行改动有关here
  • 连续几个月的数字也很低。最近在所有应用程序版本中激增。现在查看数以千计的数字。
  • 2 月 11 日有一个播放服务更新。可以链接吗?

我们的尝试(更新到 SDK 18.0.0)

更新到 v18.0.0 似乎解决了 . However, 18.0.0 introduced behaviour changes around the retrieval of custom data. We have observed that the custom data we supply to the remoteMediaClient's mediaInfo 报告的问题(然后尝试检索)在发件人应用程序断开连接然后重新连接时无效。如果你还没有,这将需要防范!