web-dev-qa-db-ja.com

Google AnalyticsサービスインテントがAndroid Oreoでクラッシュする

SDK 26をサポートするようにアプリをアップグレードしましたが、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}:アプリはAndroid.appのバックグラウンドuid UidRecord {3f302e5 u0a107 RCVRアイドルprocs:1 seq(0,0,0)}にあります。 Android.os.Handler.dispatchMessage(HandlerのAndroid.app.ActivityThread.-wrap17(Unknown Source)のAndroid.app.ActivityThread $ H.handleMessage(ActivityThread.Java:1677)のActivityThread.handleReceiver(ActivityThread.Java:3259) .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) com.Android.internal.os.Zygote $ MethodAndArgsCaller.run(Zygote.Java:240)at 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にありますAndroid.content.ContextWrapperのAndroid.app.ContextImpl.startService(ContextImpl.Java:1461)のAndroid.app.ContextImpl.startServiceCommon(ContextImpl.Java:1505)のidle procs:1 seq(0,0,0)}。 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。 Android.os.Looper.loop(Looper.Java:164)のAndroid.os.Handler.dispatchMessage(Handler.Java:105)のhandleMessage(ActivityThread.Java:1677)Android.app.ActivityThread.mのain(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つの分析サービスに追加して見てみましょう。報告します。

必要に応じて、さらに詳しい情報を提供させていただきます。ありがとう

17
checklist

Play-servicesバージョン11.4.0にアップグレードすることをお勧めします。これをGradleファイルに追加します。

_compile "com.google.Android.gms:play-services-analytics:11.4.0
_

Play Services Revision 11.4. の分析セクションから:

  • 新しいクラスAnalyticsJobServiceを追加しました。このクラスはAndroid Oの互換性サポートを提供し、データをアップロードするためにAnalyticsによって使用されます。このクラスを使用するためにアクションは必要ありません。Analyticsパッケージの一部として自動的に追加されます。
  • AnalyticsServiceクラスのgetContext()メソッドは廃止されました。
  • CampaignTrackingServiceクラスは非推奨になりました。

また、許可を得る必要があります。 Android:permission = "Android.permission.BIND_JOB_SERVICE"

以下を参照 https://developers.google.com/Android/reference/com/google/Android/gms/analytics/AnalyticsJobService

12
shaishgandhi

CampaignTrackingServiceが廃止されたため

マニフェストからこの行を削除するだけです

<service Android:name="com.google.Android.gms.analytics.CampaignTrackingService"
         Android:exported="true"/>
3
Bhavesh Rangani