web-dev-qa-db-fra.com

Unity game a commencé à planter sur Android 8

Vous avez la pile suivante à partir d'Android Vitals:

Java.lang.Error: FATAL EXCEPTION [main]
Unity version     : 5.6.2f1
Device model      : samsung SM-G955F
Device fingerprint: samsung/dream2ltexx/dream2lte:8.0.0/*****/***********B7:user/release-keys
Caused by
  at bitter.jnibridge.JNIBridge.invoke (Native Method)
  at bitter.jnibridge.JNIBridge$a.invoke (Unknown Source:20)
  at Java.lang.reflect.Proxy.invoke (Proxy.Java:913)
  at $Proxy1.onBindingDied (Unknown Source)
  at Android.app.LoadedApk$ServiceDispatcher.doConnected (LoadedApk.Java:1652)
  at Android.app.LoadedApk$ServiceDispatcher$RunConnection.run (LoadedApk.Java:1685)
  at Android.os.Handler.handleCallback (Handler.Java:789)
  at Android.os.Handler.dispatchMessage (Handler.Java:98)
  at Android.os.Looper.loop (Looper.Java:164)
  at Android.app.ActivityThread.main (ActivityThread.Java:6938)
  at Java.lang.reflect.Method.invoke (Native Method)
  at com.Android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.Java:327)
  at com.Android.internal.os.ZygoteInit.main (ZygoteInit.Java:1374)

N'ai aucune idée. Toute aide ou explication sera la bienvenue.

5
Kefrens

Nous observions la même erreur sur une grande partie de notre base de joueurs. Nous avons pu contacter Unity et avoir un aperçu de l’erreur.

Du support Unity Enterprise:

Nous sommes conscients du problème. Nous l'avons corrigé en 2017.3 après avoir mis à jour le JNIbridge pour supporter les API Oreo. Les rapports précédents décrivent cela quand un L'application Unity disposant de l'autorisation INTERNET est en cours d'exécution et le fichier Les services de Google Play sont mis à jour, arrêtés ou redémarrent, cela provoquera le application à planter dans les appareils Android 8, 8.1.

Le problème est que ServiceConnection.onBindingDied a été ajouté dans L'API de niveau 26 n'est pas implémenté avant 2017.3; nous avons ajouté ceci pour GoogleAdsServiceConnection dans cette version a également mis à jour le fichier JNIbridge pour résoudre le problème.

Je suis capable de le reproduire dans un projet vide en paramétrant Internet Accédez à "Require" et lors de l’exécution sur le périphérique, accédez à Paramètres -> Applications et notifications-> Services Google Play-> Stockage-> GÉRER L'ESPACE-> EFFACER TOUTES LES DONNÉES, puis l'application se bloque comme décrit dans Pile. Débordement.

Avez-vous l'intention de mettre à niveau votre projet en 2017.4 LTS?

Je demande parce que nous pensons qu'un backport de la solution n'est pas faisable, pas seulement parce que ce serait pour une version pour laquelle nous ne créer plus de correctifs (5.6.x) mais un correctif approprié impliquerait backporter le support complet pour les API Oreo, ce qui pourrait être délicat et peut provoquer des régressions.

Nous avons décidé d'essayer de mettre à niveau notre version d'Unity de la version 5.6.4f1 vers les versions 2017 recommandées. On dirait que cela devrait résoudre nos problèmes. 

4
Colin Cove

Aujourd'hui, notre projet sous Android Vitals pour les utilisateurs d'Android 8.0 et 8.1 a commencé à afficher le même échec. Nous utilisons Unity 2017.1.3 Peut-être que cela ne dépend pas de la version de Unity. J'ai constaté une corrélation entre l'occurrence d'un tel échec et la publication de mises à jour pour Google Play Market.

UPDATE: Nous avons pu reproduire cette erreur sur notre appareil Android 8.1:

  • Lancez l'application sur l'appareil.
  • Forcer Google Play Market à s’arrêter.
  • Essayez d'acheter IAP dans le magasin.
  • Regardez le rapport d'erreur spécifié dans Android Vitals

Étant donné la particularité de cette erreur d'apparaître de manière inattendue et massive, puis de disparaître complètement de manière inattendue sans apporter de modifications à l'application, nous avons conclu que le service système s'arrêtait de force lorsque l'arrière-plan de Google Play Market était mis à jour pour les utilisateurs avec la mise à jour automatique activée et vous connecter au réseau WiFi lors de l'utilisation de notre application, puis essayez d'accéder aux données ou d'effectuer une opération avec IAP dans le Google Play Store.

Nous avons réussi à reproduire le bogue sur Android 8.0 avec Unity 2017.2.1. 

Mise à niveau vers Unity 2017.4.7 LTS a résolu le problème.

0
Seagull