web-dev-qa-db-fra.com

Échecs de rapport de pré-lancement dus à des méthodes manquantes (dans com.google.Android.apps.mtaas.crawler-1/base.apk)

Depuis récemment, mon application a commencé à contenir des messages d'erreur étranges dans les rapports de pré-lancement (générés automatiquement après le téléchargement sur le Play Store).

Ces rapports contiennent des exceptions telles que les suivantes:

Exception Java.lang.NoSuchMethodError: No interface method a(Landroid/Arch/lifecycle/e;Landroid/Arch/lifecycle/b$a;)V in class Landroid/Arch/lifecycle/GenericLifecycleObserver; or its super classes (declaration of 'Android.Arch.lifecycle.GenericLifecycleObserver' appears in /data/app/com.google.Android.apps.mtaas.crawler-1/base.apk)
Android.Arch.lifecycle.f$a.a (f.Java:326)
Android.Arch.lifecycle.f.a (f.Java:159)
com.firebase.ui.database.FirebaseRecyclerAdapter.<init> (FirebaseRecyclerAdapter.Java:40)

Et:

Exception Java.lang.NoSuchMethodError: No static method a(Landroid/app/Activity;)V in class Landroid/Arch/lifecycle/ReportFragment; or its super classes (declaration of 'Android.Arch.lifecycle.ReportFragment' appears in /data/app/com.google.Android.apps.mtaas.crawler-1/base.apk)
Android.Arch.lifecycle.LifecycleDispatcher$DispatcherActivityCallback.onActivityCreated (LifecycleDispatcher.Java:77)
Android.app.Application.dispatchActivityCreated (Application.Java:219)
Android.app.Activity.onCreate (Activity.Java:1040)
Android.support.v4.app.SupportActivity.onCreate (SupportActivity.Java:66)
Android.support.v4.app.FragmentActivity.onCreate (FragmentActivity.Java:285)
Android.support.v7.app.AppCompatActivity.onCreate (AppCompatActivity.Java:84)

Et:

Caused by: Java.lang.NullPointerException: Attempt to invoke virtual method 'int Android.Arch.core.internal.SafeIterableMap.size()' on a null object reference
    at Android.Arch.lifecycle.LifecycleRegistry.getObserverCount(LifecycleRegistry.Java:204)
    at Android.Arch.lifecycle.ProcessLifecycleOwner.b(ProcessLifecycleOwner.Java:154)
    at Android.Arch.lifecycle.ProcessLifecycleOwner.a(ProcessLifecycleOwner.Java:100)
    at Android.Arch.lifecycle.LifecycleRuntimeTrojanProvider.onCreate(LifecycleRuntimeTrojanProvider.Java:36)
    at Android.content.ContentProvider.attachInfo(ContentProvider.Java:1751)
    at Android.content.ContentProvider.attachInfo(ContentProvider.Java:1726)
    at Android.app.ActivityThread.installProvider(ActivityThread.Java:6031)
    ... 10 more

La chose étrange est que mon application publiée semble fonctionner correctement sur de vrais appareils (les exceptions n'apparaissent que pendant les tests de pré-lancement).

J'ai essayé de revenir sur toutes les modifications (majeures) effectuées depuis la dernière version dans laquelle je n'avais pas de problème de pré-lancement: de l'API 26 à l'API 27, ancienne version des bibliothèques de support, pas de D8, etc. sur les 9 tests effectués, 1 ou 2 seulement réussissent, le reste échoue avec ce type d'erreur.

Que puis-je faire pour résoudre ce problème?

14
Peter

Je viens de recevoir une réponse du service d'assistance aux développeurs de Google Play. Ils étudient le problème. 

Pour contourner le problème, vous pouvez revenir à la version précédente du robot en désactivant la nouvelle version. 

Voici comment vous désabonner:

  • Connectez-vous à votre console de jeu. 
  • Sélectionnez une application. 
  • Sélectionnez Gestion > Rapport de pré-lancement> Paramètres. Dans la section «Version du rapport de pré-lancement », Déplacez le commutateur de désactivation vers la droite jusqu'à ce qu'il devienne Bleu.

Après cela, les rapports de lancement apparaissent correctement à nouveau.

PS - Cela désactivera les tests par défaut effectués par Google Play et vous risquez d’omettre d’autres erreurs provenant d’une autre cause. Par conséquent, veillez à implémenter vos propres tests avant de les mettre en production.

5
Peter

L'erreur Gson a été provoquée par une régression. Le problème a été corrigé. Cela devrait fonctionner comme prévu après la publication du correctif dans un jour ou deux.

0
Saswat Anand