Google Analytics 服务 Intent 在 Android Oreo 上崩溃

问题描述 投票:0回答:3

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

致命异常:java.lang.RuntimeException:无法启动接收器 com.google.android.gms.analytics.AnalyticsReceiver: java.lang.IllegalStateException:不允许启动服务意图{ act=com.google.android.gms.analytics.ANALYTICS_DISPATCH cmp=com.example.android/com.google.android.gms.analytics.AnalyticsService }:应用程序在后台 uid UidRecord{3f302e5 u0a107 RCVR 空闲过程: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_DISPATCH cmp=com.example.android/com.google.android.gms.analytics.AnalyticsService }:应用程序在后台 uid UidRecord{3f302e5 u0a107 RCVR 空闲过程: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)

这是我的相关清单:

<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 个分析服务中并查看。会报告。

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

android google-analytics android-8.0-oreo
3个回答
12
投票

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

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

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

  • 添加了一个新课程
    AnalyticsJobService
    。此类为 Android O 提供兼容性支持,并由 Analytics 用于上传数据。使用此类无需执行任何操作,它会自动添加为 Analytics 包的一部分。
  • 弃用了
    getContext()
    类的
    AnalyticsService
    方法。
  • 已弃用
    CampaignTrackingService
    类。

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

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


4
投票

因为

CampaignTrackingService
现已弃用

只需从清单中删除此行

<service android:name="com.google.android.gms.analytics.CampaignTrackingService"
         android:exported="true"/>

0
投票

最新的分析 sdk 也发生了这种情况,切换到 Firebase Analytics 可能会有所帮助:
Android 版 Google Analytics Services SDK (com.google.android.gms:play-services-analytics:18.1.0) 已弃用

改用 Google Analytics for Firebase

© www.soinside.com 2019 - 2024. All rights reserved.