2017-09-17 2 views
7

J'ai mis à jour l'application pour soutenir SDK 26 et maintenant provoque Google Analytics se bloque lors de l'exécution sur Android Oreo:service Google Analytics se bloque sur Android Intent Oreo

Exception fatale: java.lang.RuntimeException: Impossible de démarrer récepteur com.google.android.gms.analytics.AnalyticsReceiver: java.lang.IllegalStateException: Non autorisé à démarrer le service {intention 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)} à android.app.ActivityThread.handleReceiver (ActivityThread.java:3259) à android.app.ActivityThread.-wrap17 (source inconnue) at android.app.ActivityThread $ H. handleMessage (ActivityThread.java:1677) à android.os.Handler.dispatchMessage (Handler.java:105) à android.os.Looper.loop (Looper.java:164) at 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) Provoqué par java.lang.IllegalStateException: non autorisé à démarrer 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 inactivité procs: 1 suivants (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 (Source inconnue: 68) au com. google.android.gms.analytics.AnalyticsReceiver.onReceive (Inconnu Source: 11) à android.app.ActivityThread.handleReceiver (ActivityThread.java:3252) at android.app.ActivityThread.-wrap17 (source inconnue) à 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)

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 Avoir Oreo s'écraser en raison de ce au cours des dernières 24 heures. Semble être affectant seulement sur l'installation. Je vais essayer et 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

+0

Vous ne trouvez pas quoi que ce soit en ligne, semble que vous soyez le premier à rencontrer ce problème. Je ne peux pas le reproduire moi-même en raison d'un manque d'appareils Android 8, mais cela devrait être répondu bientôt. – Zoe

+0

Nous obtenons une erreur similaire de périphériques Oreo pour le service CampaignTrackingService: Exception non fatale: java.lang.RuntimeException: Impossible de démarrer le destinataire com.google.android.gms.analytics.CampaignTrackingReceiver: java.lang.IllegalStateException: Je n'ai pas le droit de démarrer le service. Intent {cmp = com.overdrive.mobile.android.mediaconsole/com.google.android.gms.analytics.CampaignTrackingService (a des extras)} –

+0

J'ai soulevé le problème avec Google Analytics: https: // issuetracker .google.com/issues/65788222. Toute personne ayant ce problème peut-elle également ajouter ses préoccupations? – checklist

Répondre

9

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

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

De l'Play Services Revision 11.4.0, la section d'analyse:

  • Ajout d'une nouvelle classe AnalyticsJobService. Cette classe fournit un support de 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 package Analytics.
  • Déconseillé la méthode getContext() de la classe AnalyticsService.
  • Déconseillé la classe CampaignTrackingService.
+3

Pourquoi Google n'a-t-il pas communiqué ce PRIOR à Oreo? – checklist

0

Dans l'application android O, vous devez modifier le flux de travail d'enregistrement de votre BroadcastReceiver.Ne sont plus autorisés à enregistrer les diffusions implicites dans le manifeste, sauf quelques-unes, comme le referer d'installation et le changement d'état du réseau.

applications peuvent utiliser Context.registerReceiver() lors de l'exécution d'enregistrer un récepteur pour toutes les émissions, que ce soit implicite ou explicite.

Alors il suffit de les enregistrer quelque part avec Context.registerReceiver(), mieux dans certains services planifiés. cochez cette case

+2

Merci. Mais n'est-ce pas quelque chose que la librairie Google Analytics devrait faire? Je n'ai rien trouvé dans leur doc à ce sujet. – checklist

+0

@checklist, peut-être que doc pour l'analyse n'a pas encore changé. Une autre version pourquoi cela ne fonctionne pas - service n'est pas autorisé à être exécuté dans l'application de fond [trop] (https://developer.android.com/about/versions/oreo/background.html#services). Vous pouvez le tester si vous démarrez un service avec la notification de premier plan, peut-être que les analyses ne se bloqueront pas de cette façon, si cela est vrai - vous devez attendre jusqu'à ce qu'ils mettent à jour la version de l'analyse. Et assurez-vous que vous utilisez le dernier. –

0

parce CampaignTrackingService est maintenant dépréciée

simplement supprimer cette ligne de votre manifeste

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