Google Analytics 服务 Intent 在 Android Oreo 上崩溃 [英] Google Analytics service Intent crashes on Android Oreo

查看:25
本文介绍了Google Analytics 服务 Intent 在 Android Oreo 上崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已升级我的应用以支持 SDK 26,现在 Google Analytics 在 Android Oreo 上运行时会导致崩溃:

I have upgraded my app to support SDK 26 and now Google Analytics causes crashes when running on Android Oreo:

致命异常:java.lang.RuntimeException:无法启动接收器com.google.android.gms.analytics.AnalyticsReceiver:java.lang.IllegalStateException:不允许启动服务意图{act=com.google.android.gms.analytics.ANALYTICS_DISPATCHcmp=com.example.android/com.google.android.gms.analytics.AnalyticsService}:应用程序在后台 uid UidRecord{3f302e5 u0a107 RCVR idle procs:1序列(0,0,0)}在 android.app.ActivityThread.handleReceiver(ActivityThread.java:3259)在 android.app.ActivityThread.-wrap17(来源不明)在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1677)在 android.os.Handler.dispatchMessage(Handler.java:105)在 android.os.Looper.loop(Looper.java:164)在 android.app.ActivityThread.main(ActivityThread.java:6541)在 java.lang.reflect.Method.invoke(Method.java)在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 由 java.lang.IllegalStateException 引起:不允许启动服务意图{act=com.google.android.gms.analytics.ANALYTICS_DISPATCHcmp=com.example.android/com.google.android.gms.analytics.AnalyticsService}:应用程序在后台 uid UidRecord{3f302e5 u0a107 RCVR idle procs:1序列(0,0,0)}在 android.app.ContextImpl.startServiceCommon(ContextImpl.java:1505)在 android.app.ContextImpl.startService(ContextImpl.java:1461)在 android.content.ContextWrapper.startService(ContextWrapper.java:644)在 android.content.ContextWrapper.startService(ContextWrapper.java:644)在 com.google.android.gms.internal.zzaot.onReceive(未知来源:68)在 com.google.android.gms.analytics.AnalyticsReceiver.onReceive(未知资料来源:11)在 android.app.ActivityThread.handleReceiver(ActivityThread.java:3252)在 android.app.ActivityThread.-wrap17(来源不明)在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1677)在 android.os.Handler.dispatchMessage(Handler.java:105)在 android.os.Looper.loop(Looper.java:164)在 android.app.ActivityThread.main(ActivityThread.java:6541)在 java.lang.reflect.Method.invoke(Method.java)在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

Fatal Exception: java.lang.RuntimeException: Unable to start receiver com.google.android.gms.analytics.AnalyticsReceiver: java.lang.IllegalStateException: Not allowed to start service Intent { act=com.google.android.gms.analytics.ANALYTICS_DISPATCH cmp=com.example.android/com.google.android.gms.analytics.AnalyticsService }: app is in background uid UidRecord{3f302e5 u0a107 RCVR idle procs:1 seq(0,0,0)} at android.app.ActivityThread.handleReceiver(ActivityThread.java:3259) at android.app.ActivityThread.-wrap17(Unknown Source) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1677) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) Caused by java.lang.IllegalStateException: Not allowed to start service Intent { act=com.google.android.gms.analytics.ANALYTICS_DISPATCH cmp=com.example.android/com.google.android.gms.analytics.AnalyticsService }: app is in background uid UidRecord{3f302e5 u0a107 RCVR idle procs:1 seq(0,0,0)} at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1505) at android.app.ContextImpl.startService(ContextImpl.java:1461) at android.content.ContextWrapper.startService(ContextWrapper.java:644) at android.content.ContextWrapper.startService(ContextWrapper.java:644) at com.google.android.gms.internal.zzaot.onReceive(Unknown Source:68) at com.google.android.gms.analytics.AnalyticsReceiver.onReceive(Unknown Source:11) at android.app.ActivityThread.handleReceiver(ActivityThread.java:3252) at android.app.ActivityThread.-wrap17(Unknown Source) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1677) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

这是我的相关清单:

<meta-data
    android:name="com.google.android.gms.analytics.globalConfigResource"
    android:resource="@xml/analytics"/>
<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version"/>

<!-- Optionally, register AnalyticsReceiver and AnalyticsService to support background
     dispatching on non-Google Play devices -->
<receiver
    android:name="com.google.android.gms.analytics.AnalyticsReceiver"
    android:enabled="true">
    <intent-filter>
        <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH"/>
    </intent-filter>
</receiver>
<service
    android:name="com.google.android.gms.analytics.AnalyticsService"
    android:enabled="true"
    android:exported="false"/>

<!-- Optionally, register CampaignTrackingReceiver and CampaignTrackingService to enable
     installation campaign reporting -->
<receiver
    android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
    android:exported="true">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER"/>
    </intent-filter>
</receiver>
<service
    android:name="com.google.android.gms.analytics.CampaignTrackingService"
    android:exported="true"/>

在过去 24 小时内,数百个 Oreo 设备因此而崩溃.似乎只影响安装.我将尝试将 android:permission="android.permission.BIND_JOB_SERVICE" 添加到 2 个分析服务并查看.会举报.

Having hundreds of Oreo devices crashing due to this in past 24 hours. Seems to be affecting only on install. I am going to try and add android:permission="android.permission.BIND_JOB_SERVICE" to the 2 analytics services and see. Will report.

如果需要,我很乐意提供更多信息.谢谢

I Will be happy to provide more info if needed. Thanks

推荐答案

我建议升级到 play-services 版本 11.4.0.将此添加到您的 Gradle 文件中:

I recommend upgrading to play-services version 11.4.0. Add this in your Gradle file:

compile "com.google.android.gms:play-services-analytics:11.4.0

来自 Play 服务修订版 11.4.0,分析部分:

  • 添加了一个新类 AnalyticsJobService.此类为 Android O 提供兼容性支持,并被 Analytics 用于上传数据.使用此类无需任何操作,它是作为 Analytics 包的一部分自动添加的.
  • 弃用了 AnalyticsService 类的 getContext() 方法.
  • 弃用了 CampaignTrackingService 类.
  • Added a new class AnalyticsJobService. This class provides compatibility support for Android O and is used by Analytics to upload data. No action is necessary to use this class, it’s added automatically as part of the Analytics package.
  • Deprecated the getContext() method of the AnalyticsService class.
  • Deprecated the CampaignTrackingService class.

而且您还必须获得许可.android:permission="android.permission.BIND_JOB_SERVICE"

and also you have to get permission. android:permission="android.permission.BIND_JOB_SERVICE"

见下文https://developers.google.com/android/参考/com/google/android/gms/analytics/AnalyticsJobService

这篇关于Google Analytics 服务 Intent 在 Android Oreo 上崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆