web-dev-qa-db-fra.com

java.lang.RuntimeException sur Android.app.ActivityThread.performLaunchActivity

Depuis la console Google Play, Java.lang.RuntimeException se produit sans "causée par:"

Le journal ci-dessous est copié à partir du journal de plantage de la console Google Play.
C'est pour: Android 8.0, Android 8.1, Android 7.0, Android 7.1

Java.lang.RuntimeException: 
  at Android.app.ActivityThread.performLaunchActivity (ActivityThread.Java:2955)
  at Android.app.ActivityThread.handleLaunchActivity (ActivityThread.Java:3030)
  at Android.app.ActivityThread.-wrap11 (Unknown Source)
  at Android.app.ActivityThread$H.handleMessage (ActivityThread.Java:1696)
  at Android.os.Handler.dispatchMessage (Handler.Java:105)
  at Android.os.Looper.loop (Looper.Java:164)
  at Android.app.ActivityThread.main (ActivityThread.Java:6938)
  at Java.lang.reflect.Method.invoke (Method.Java)
  at com.Android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.Java:327)
  at com.Android.internal.os.ZygoteInit.main (ZygoteInit.Java:1374)

S'il vous plaît, aidez-moi à ce sujet!

25
San Moohak

ActivityThread.Java Indique que c'est pdatePendingConfiguration () ou registerOnActivityPausedListener () , donc il échoue avec .onPause() ou il ne parvient pas à appeler le super() avec les arguments corrects - ou quelque chose ne va pas avec l'application de Configuration.

Je serais heureux d'expliquer comment résoudre le problème, mais la question n'a pas le code qui lève l'exception. La meilleure façon de résoudre ce problème pourrait être d'utiliser quelque chose de similaire Firebase Crashlytics , afin que l'on puisse voir d'où cela vient exactement et quels appareils sont affectés (au cas où cela devrait être spécifique). Je soupçonne presque que cela pourrait être causé par le démarrage d'un Activity avec le Context de l'application, sans définir l'indicateur Intent.FLAG_ACTIVITY_NEW_TASK (Voir: cette réponse =).

4
Martin Zeitler

De l'analyse du journal, on peut faire l'hypothèse suivante,

L'exception est levée dans l'une des bibliothèques externes utilisées dans le projet

Explication: Fondamentalement, l'exception est levée par ActivityThread.Java, Plus précisément, la méthode performLaunchActivity() à la ligne 2955 A levé l'exception. Comme la trace de la pile n'incluait aucun des internes de votre application class, nous pouvons supposer que l'exception est levée dans un external class fourni avec une bibliothèque que vous utilisez dans votre projet.

Si tel est le cas, les solutions de contournement suivantes peuvent être effectuées pour résoudre ce problème -

  • Examinez toutes les dépendances de bibliothèque et démarquez celles suspectées
  • Si vous utilisez une vue personnalisée (comme AdView) à partir d'une bibliothèque externe, cette bibliothèque est la plus susceptible de provoquer ce blocage
  • Mettez à niveau toutes les bibliothèques tierces vers la dernière version car le crash est à l'origine des derniers systèmes d'exploitation
  • Consultez la documentation officielle pour implémenter correctement ces bibliothèques. Par exemple, la page de dépannage du site Web du SDK peut avoir la solution à ce problème précis. Par exemple, le SDK Dynamsoft Camera a déjà résolu ce problème ici
  • Examinez le suivi des problèmes des bibliothèques pour ce problème. Par exemple, la bibliothèque Android-Permission a un problème fermé ayant exactement le même journal.

  • Si votre projet est réactif natif , il y a une longue discussion à ce sujet ici

Suggestion : Je veux ajouter quelques lignes supplémentaires avec la suggestion de @Martin Zeitler d'utiliser Crashlytics .

Je vous recommande de personnaliser vos rapports de plantage Firebase Crashlytics . Parce que, parfois, seule la trace de pile n'est pas suffisante pour reproduire le crash.

En utilisant la fonction de personnalisation, vous pourrez obtenir,

  • Identité de l'utilisateur

  • État de l'application

  • Les événements qui ont eu lieu avant le crash

Ce qui vous aidera sûrement à régénérer le crash et à le réparer.

2
Roaim

Cet accident pourrait se produire à partir de n'importe quoi. J'ai eu le même problème et la cause principale était un IllegalArgumentException lancé par un Comparator incorrectement implémenté dans un Fragment#onViewCreated Surchargé. Le fragment lui-même a été ajouté pendant AppCompatActivity#onCreate Via FragmentManager.

2020-01-03 15:38:33.001 7860-7860/com.example.app E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.app, PID: 7860
    Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/MyActivity}: Android.view.InflateException: Binary XML file line #9 in com.example.app:layout/my_activity: Binary XML file line #9 in com.example.app:layout/my_activity: Error inflating class fragment
        at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:3270)
        at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:3409)
        at Android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.Java:83)
        at Android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.Java:135)
        at Android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.Java:95)
        at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:2016)
        at Android.os.Handler.dispatchMessage(Handler.Java:107)
        at Android.os.Looper.loop(Looper.Java:214)
        at Android.app.ActivityThread.main(ActivityThread.Java:7356)
        at Java.lang.reflect.Method.invoke(Native Method)
        at com.Android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.Java:492)
        at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:930)
     Caused by: Android.view.InflateException: Binary XML file line #9 in com.example.app:layout/my_activity: Binary XML file line #9 in com.example.app:layout/my_activity: Error inflating class fragment
     Caused by: Android.view.InflateException: Binary XML file line #9 in com.example.app:layout/my_activity: Error inflating class fragment
     Caused by: Java.lang.IllegalArgumentException: Comparison method violates its general contract!
        at Java.util.TimSort.mergeLo(TimSort.Java:777)
        at Java.util.TimSort.mergeAt(TimSort.Java:514)
        at Java.util.TimSort.mergeCollapse(TimSort.Java:441)
        at Java.util.TimSort.sort(TimSort.Java:245)
        at Java.util.Arrays.sort(Arrays.Java:1492)
        at Java.util.ArrayList.sort(ArrayList.Java:1470)
        at Java.util.Collections.sort(Collections.Java:206)
        at com.example.app.MyFragment.onViewCreated(MyFragment.Java:188)
        at androidx.fragment.app.FragmentManagerImpl.ensureInflatedFragmentView(FragmentManagerImpl.Java:1144)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.Java:851)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.Java:1133)
        at androidx.fragment.app.FragmentManagerImpl.addFragment(FragmentManagerImpl.Java:1393)
        at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManagerImpl.Java:3205)
        at androidx.fragment.app.FragmentController.onCreateView(FragmentController.Java:134)
        at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.Java:357)
        at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.Java:336)
        at Android.view.LayoutInflater.tryCreateView(LayoutInflater.Java:1069)
        at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:997)
        at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:961)
        at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:1123)
        at Android.view.LayoutInflater.inflate(LayoutInflater.Java:656)
        at Android.view.LayoutInflater.inflate(LayoutInflater.Java:534)
2020-01-03 15:38:33.003 7860-7860/com.example.app E/AndroidRuntime:     at Android.view.LayoutInflater.inflate(LayoutInflater.Java:481)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.Java:555)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.Java:161)

Bien sûr, il est presque impossible de trouver la cause première si vous n'avez que le rapport d'erreur de la console Google Play. J'ai eu la chance d'avoir un incident client, ce qui m'a permis de savoir où chercher et comment reproduire l'accident. Vous pouvez également passer à un outil de rapport d'incident personnalisé comme HockeyApp ou Firebase pour voir l'intégralité du stacktrace.

0
Konsumierer

Intro

Pour les gens qui disent:

did you resolve this issue? It's a rising crash in my app as well – Bao Le Feb 6 at 8:36 
did anybody resolve this issue? – AwaisMajeed Feb 9 at 13:15 
Also happening to me. =( – masterlopau Feb 26 at 1:51
do this solved? – Vengat Jul 19 at 5:55 

Avez-vous [~ # ~] [~ # ~] la cause supplémentaire Journal ? Cela aiderait énormément.

Voici votre journal des plantages:

Java.lang.RuntimeException: 
  at Android.app.ActivityThread.performLaunchActivity (ActivityThread.Java:2955)
  at Android.app.ActivityThread.handleLaunchActivity (ActivityThread.Java:3030)
  at Android.app.ActivityThread.-wrap11 (Unknown Source)
  at Android.app.ActivityThread$H.handleMessage (ActivityThread.Java:1696)
  at Android.os.Handler.dispatchMessage (Handler.Java:105)
  at Android.os.Looper.loop (Looper.Java:164)
  at Android.app.ActivityThread.main (ActivityThread.Java:6938)
  at Java.lang.reflect.Method.invoke (Method.Java)
  at com.Android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.Java:327)
  at com.Android.internal.os.ZygoteInit.main (ZygoteInit.Java:1374)

Comparez avec ce journal de plantage (numéros de ligne et flux de code identiques):

Java.lang.RuntimeException: 
  at Android.app.ActivityThread.performLaunchActivity (ActivityThread.Java:2955)
  at Android.app.ActivityThread.handleLaunchActivity (ActivityThread.Java:3030)
  at Android.app.ActivityThread.-wrap11 (Unknown Source)
  at Android.app.ActivityThread$H.handleMessage (ActivityThread.Java:1696)
  at Android.os.Handler.dispatchMessage (Handler.Java:105)
  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)

Cette ligne diffère:

  at Java.lang.reflect.Method.invoke (Method.Java)

et:

  at Java.lang.reflect.Constructor.newInstance0 (Native Method)

avec le journal de cause supplémentaire:

Caused by: Android.support.v4.app.i$b: 
  at Android.support.v4.app.i.instantiate (Fragment.Java:386)
  at Android.support.v4.app.k.a (FragmentContainer.Java:33)
  at Android.support.v4.app.s.a (FragmentState.Java:79)
  at Android.support.v4.app.o.a (FragmentManager.Java:3080)
  at Android.support.v4.app.l.a (FragmentController.Java:152)
  at Android.support.v4.app.j.onCreate (FragmentActivity.Java:330)
  at Host.exp.exponent.experience.f.onCreate (ReactNativeActivity.Java:140)
  at Host.exp.exponent.experience.a.onCreate (BaseExperienceActivity.Java:79)
  at Host.exp.exponent.experience.ExperienceActivity.onCreate (ExperienceActivity.Java:160)
  at Host.exp.exponent.experience.ShellAppActivity.onCreate (ShellAppActivity.Java:22)
  at Android.app.Activity.performCreate (Activity.Java:7174)
  at Android.app.Instrumentation.callActivityOnCreate (Instrumentation.Java:1220)
  at Android.app.ActivityThread.performLaunchActivity (ActivityThread.Java:2908)
Caused by: Java.lang.reflect.InvocationTargetException: 
  at Java.lang.reflect.Constructor.newInstance0 (Native Method)
  at Java.lang.reflect.Constructor.newInstance (Constructor.Java:334)
  at Android.support.v4.app.i.instantiate (Fragment.Java:364)
Caused by: Java.lang.IllegalStateException: 
  at abi30_0_0.Host.exp.exponent.modules.api.screens.Screen$ScreenFragment.<init> (Screen.Java:19)

[~ # ~] note [~ # ~] le at Android.support.v4.app lignes.

Voir L'application autonome Android se bloque aléatoirement à l'ouverture de l'application

Correctifs

Packages de classe Android.support, ou avoir un suffixe * Compat

(1) AndroidX

(i) Ce problème a une multitude de causes provenant de ma recherche sur Internet. Une cause courante semble être l'utilisation de Android.support class packages, Ou avoir un *Compat suffix. Vérifiez vos fichiers build.gradle Pour Android.support.v4 Etc ...

(ii) Parce que parfois cela ne se produit pas dans les tests, seul le déploiement, je suppose que Android.support.v4 etc ... utilise une bibliothèque de périphériques problématique sur certains périphériques ou API.

  • Remarque: Avec la sortie de Android 9.0 (API level 28) il y a une nouvelle version de la bibliothèque de support appelée AndroidX qui fait partie de Jetpack. La bibliothèque AndroidX contient la bibliothèque de support existante et inclut également les derniers composants Jetpack.

  • Vous pouvez continuer à utiliser la bibliothèque de support. Les artefacts historiques (ceux versionnés 27 Et versions antérieures et emballés sous Android.support.*) Resteront disponibles sur Google Maven. Cependant, tout nouveau développement de bibliothèque se produira dans la bibliothèque AndroidX.

  • Nous vous recommandons d'utiliser les bibliothèques AndroidX dans tous les nouveaux projets. Vous devez également envisager de migrer les projets existants vers AndroidX également. Configuration de la bibliothèque de support

  • Les bibliothèques de support sont désormais disponibles via le référentiel Google's Maven. Nous ne prenons plus en charge le téléchargement des bibliothèques via le SDK Manager, Et cette fonctionnalité sera bientôt supprimée ..

  • Remarque: Après avoir inclus la bibliothèque de support dans votre projet d'application, nous vous recommandons fortement de réduire , de masquer et optimisez votre application pour la sortie. En plus de protéger votre code source avec l'obscurcissement, la réduction supprime les classes inutilisées de toutes les bibliothèques que vous incluez dans votre application, ce qui maintient la taille de téléchargement de votre application aussi petite que possible.

  • Remarque: Si vous incluez plusieurs bibliothèques de prise en charge, la version minimale du SDK doit être la version la plus élevée requise par l'une des bibliothèques spécifiées. Par exemple, si votre application comprend à la fois la bibliothèque de support v14Preference et la bibliothèque v17Leanback, votre version minimale du SDK doit être 17 ou plus.

Voir également:

Packages de bibliothèque de support

caractéristiques

(2) écrans natifs réactifs

Il est lié aux écrans natifs réactifs et ils ont une solution de contournement pour ce problème, veuillez consulter:

Android se bloque de façon non déterministe lors de la restauration à partir de l'arrière-plan - veedeo.

0
Jon Goodwin