web-dev-qa-db-fra.com

Intention du service Google Analytics se bloque sur Android Oreo

J'ai mis à jour mon application pour prendre en charge le SDK 26 et maintenant, Google Analytics provoque des plantages lors de l'exécution sur Android Oreo:

Exception fatale: Java.lang.RuntimeException: impossible de démarrer le récepteur com.google.Android.gms.analytics.AnalyticsReceiver: Java.lang.IllegalStateException: non autorisé à démarrer le service Intent {act = com.google.Android.gms.analytics. ANALYTICS_DISPATCH cmp = com.example.Android/com.google.Android.gms.analytics.AnalyticsService}: l'application est en arrière-plan uid UidRecord {3f302e5 u0a107 RCVR idle procs: 1 seq (0,0,0)} at Android.app. ActivityThread.handleReceiver (ActivityThread.Java:3259) sur Android.app.ActivityThread.-wrap17 (Source inconnue) sur Android.app.ActivityThread $ H.handleMessage (ActivityThread.Java:1677) sur Android.os.Handler.dispatchMessage (Handler .Java: 105) sur Android.os.Looper.loop (Looper.Java:164) sur Android.app.ActivityThread.main (ActivityThread.Java:6541) sur 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) Causé par Java.lang.IllegalStateException: Pas tous due to start service Intent {act = com.google.Android.gms.analytics.ANALYTICS_DISPATCH cmp = com.example.Android/com.google.Android.gms.analytics.AnalyticsService}: l'application est en arrière-plan uidRecord {3f302e5 u0a107 RCVR processus inactifs: 1 seq (0,0,0)} sur Android.app.ContextImpl.startServiceCommon (ContextImpl.Java:1505) sur Android.app.ContextImpl.startService (ContextImpl.Java:1461) sur Android.content.ContextWrapper. startService (ContextWrapper.Java:644) sur Android.content.ContextWrapper.startService (ContextWrapper.Java:644) sur com.google.Android.gms.internal.zzaot.onReceive (Source inconnue: 68) sur com.google.Android. gms.analytics.AnalyticsReceiver.onReceive (Source inconnue: 11) sur Android.app.ActivityThread.handleReceiver (ActivityThread.Java:3252) sur Android.app.ActivityThread.-wrap17 (Source inconnue) sur Android.app.ActivityThread $ H. handleMessage (ActivityThread.Java:1677) sur Android.os.Handler.dispatchMessage (Handler.Java:105) sur Android.os.Looper.loop (Looper.Java:164) sur Android.app.ActivityThread.m ain (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)

Ceci est mon manifeste pertinent:

<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"/>

Des centaines d'appareils Oreo se sont écrasés à cause de cela au cours des dernières 24 heures. Semble n'affecter que lors de l'installation. Je vais essayer d'ajouter Android: permission = "Android.permission.BIND_JOB_SERVICE" aux 2 services d'analyse et voir. Informera.

Je serai heureux de fournir plus d'informations si nécessaire. Merci

17
checklist

Je recommande la mise à niveau vers la version 11.4.0 de play-services. Ajoutez ceci dans votre fichier Gradle:

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

Dans la section Play Services Revision 11.4. , analytics:

  • Ajout d'une nouvelle classe AnalyticsJobService. Cette classe prend en charge la compatibilité pour Android O et est utilisée par Analytics pour télécharger des données. Aucune action n'est nécessaire pour utiliser cette classe, elle est ajoutée automatiquement dans le cadre du package Analytics.
  • Obsolète la méthode getContext() de la classe AnalyticsService.
  • Obsolète la classe CampaignTrackingService.

et vous devez également obtenir la permission. Android: permission = "Android.permission.BIND_JOB_SERVICE"

Voir ci-dessous https://developers.google.com/Android/reference/com/google/Android/gms/analytics/AnalyticsJobService

12
shaishgandhi

parce que CampaignTrackingService est maintenant obsolète

supprimez simplement cette ligne de votre manifeste

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