Große Anzahl von RemoteServiceExceptions in Googles Cast MediaNotificationService

10

In den letzten 24 Stunden haben wir einige tausend Abstürze bei Google gesehen 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)

Ich habe ähnliche Probleme beim Erstellen meines eigenen Vordergrunddienstes festgestellt, aber da dies innerhalb der Besetzungsbibliothek liegt, haben wir keine Kontrolle darüber.

Der Chromecast-Empfänger wird von einem Dritten verwaltet. Wir benutzen:

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

Mögliche Hinweise:

  • Es passiert auf OnePlus, Huawei, Samsung, Google, anscheinend jedem Hersteller (und Betriebssystem) in Zahlen, die mit seinem Marktanteil korrelieren.
  • Die Abstürze treten auf verschiedenen Leitungen für verschiedene Geräte auf (z. B. das oben genannte Galaxy S9, der S8 stürzt stattdessen auf der Leitung 1872 ab) und werden daher bei Crashlytics nicht zusammengefasst. Dies deutet darauf hin, dass es sich um ein Problem auf OS / Google Play Services-Ebene handelt.
  • Die Abstürze treten in allen aktiven Versionen der App auf und beginnen gleichzeitig.
  • Die Abstürze sind seit Monaten in geringer Anzahl aufgetreten, haben sich jedoch am Wochenende plötzlich verstärkt und zeigen keine Anzeichen einer Verlangsamung.
JakeSteam
quelle
2
Das gleiche Problem tritt heutzutage auch bei uns auf. Unsere Cast-Framework-Version ist 17.1.0
Zylon
@cylon Wir haben festgestellt, dass Chrome v80 kurz vor Beginn unserer Abstürze als stabil freigegeben wurde. Vielleicht hat das die Empfänger-Apps irgendwie gestört?
JakeSteam
Hat jemand schon irgendwelche Korrekturen gefunden?
Casolorz

Antworten:

5

Es sieht aus wie ein bekanntes Problem :

Das Problem trat nur auf HUAWEI-Geräten mit Android 9 auf: P20 Pro, P30 Pro, P20 Lite, P30, P20, Honor View 10, Mate 20 Pro

Cast SDK-Version: Android Sender 16.2.0 (Ich habe die Versionshinweise von Android Sender 17.1.0 überprüft, aber keine Fehlerbehebungen)

Hier ist das Absturzprotokoll von 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)

dass ein Google-Ingenieur sagt, ist behoben :

Wir haben eine Lösung für dieses Problem, die in der nächsten Version der Android Cast-Clientbibliothek veröffentlicht werden sollte.

aber sie wissen nicht , wann das Update erscheinen wird :

Bisher haben wir keinen festen Termin für die nächste Veröffentlichung. Wir werden es hier aktualisieren oder überprüfen Sie es hier https://developers.google.com/cast/docs/release-notes

In den Versionshinweisen wird kein Fix für dieses Problem erwähnt.

Ich werde diese Antwort aktualisieren, wenn ich etwas weiter finde.

Aktualisieren

Dies ist behoben. Siehe Anjaneeshdie Antwort .

Aktualisieren

Es gibt einige Probleme mit 18.0.0. Siehe rednazdie Antwort . Bei Kommentatoren zu diesem Problem treten immer noch Abstürze mit Samsung- und Huawei- Plattformen auf, jedoch mit stark verringerten Raten. Ich habe eine neue Ausgabe dazu eingereicht .

Heidegrenzen
quelle
1
Sehr umfassende Antwort, danke. Ich werde versuchen, das SDK zu aktualisieren. Finden Sie es immer noch wirklich bizarr, wie das Problem nach Jahren am 17.X plötzlich auftreten kann.
JakeSteam
1
Antwort unseres technischen Kontakts bei Google: "Das Update für den Absturzfehler befindet sich in der Android Cast SDK-Clientbibliothek v18.0.0. Wenn Sie ein Upgrade durchführen, sollte es behoben werden." Das bringt natürlich neue Themen mit sich !
JakeSteam
Dieses Problem tritt immer noch unter Version 18.0.0 und hauptsächlich auf Huawei-Geräten mit Android 9 auf. Gibt es noch andere Lösungen?
Pabi Moloi
4

Das Update wurde in der Android Cast SDK-Clientbibliothek v18.0.0 veröffentlicht (siehe den zweiten Punkt der Versionshinweise: https://developers.google.com/cast/docs/release-notes#december-5,-2019 )

Der Absturz sollte behoben sein, sobald Sie auf Version 18.0.0 aktualisieren

Anjaneesh Rayapati
quelle
Hat bei mir nicht funktioniert. Das Problem besteht weiterhin.
Pabi Moloi
1

Wir haben auch dieses Problem mit sehr ähnlichen Symptomen. Wir sind auf Cast SDK Version 16.1.2

  • Nur unter Android 8 und höher. Es scheint , verknüpft werden , um die Ausführung im Hintergrund ändert sich hier
  • Auch niedrige Zahlen seit Monaten. Vor kurzem über alle App-Versionen hinweg versetzt. Jetzt schauen wir uns Zahlen zu Tausenden an.
  • Am 11. Februar gab es ein Update der Spieldienste. Könnte verlinkt werden?

Was wir versucht haben (Aktualisierung auf SDK 18.0.0)

Das Aktualisieren auf Version 18.0.0 scheint das von @Anjaneesh gemeldete Problem zu beheben . In 18.0.0 wurden jedoch Verhaltensänderungen beim Abrufen benutzerdefinierter Daten eingeführt. Wir haben festgestellt, dass die benutzerdefinierten Daten, die wir an mediaInfo des remoteMediaClient senden (und dann abrufen), auf Null gesetzt werden, wenn die Absender-App die Verbindung trennt und dann erneut eine Verbindung herstellt. Dies muss geschützt werden, wenn Sie nicht bereits sind!

Rednaz
quelle