java.lang.RuntimeException на android.app.ActivityThread.performLaunchActivity - программирование

java.lang.RuntimeException на android.app.ActivityThread.performLaunchActivity

В консоли Google Play возникает java.lang.RuntimeException без " Причины: "

Приведенный ниже журнал скопирован из журнала сбоя консоли Google Play.
Это для: 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)

Пожалуйста, помогите мне в этом!

4b9b3361

Ответ 1

ActivityThread.java говорит, что он updatePendingConfiguration() или registerOnActivityPausedListener(), поэтому он либо не работает с .onPause(), либо не вызывает метод super() с правильными аргументами - или что-то еще не так с применяемым Configuration.

Я бы с радостью объяснил, как решить проблему, но в вопросе отсутствует код, который выдает исключение. Лучшим способом решения этой проблемы может быть использование чего-то похожего Firebase Crashlytics, чтобы можно было увидеть, откуда именно это исходит и на какие устройства влияют (в случае, если это должно быть конкретным). Я почти подозреваю, что это может быть вызвано запуском Activity с приложением Context, а не установкой флага Intent.FLAG_ACTIVITY_NEW_TASK (см.: этот ответ).

Ответ 2

Из анализа журнала можно сделать следующие предположения:

Исключение выдается в любой из внешних библиотек используется в проекте

Объяснение: По сути, исключение выдается ActivityThread.java, более конкретно, метод performLaunchActivity() в строке 2955 выдает исключение. Поскольку трассировка стека не включала в себя внутреннее class вашего приложения, мы можем предположить, что исключение выдается в внешнем class, который поставляется вместе с библиотекой, которую вы используете в своем проекте.

Если это так, то для решения этой проблемы можно выполнить следующие обходные пути -

  • Изучите все зависимости библиотеки и подозрительные уценки
  • Если вы используете настраиваемое представление (например, AdView) из внешней библиотеки, эта библиотека, скорее всего, вызовет этот сбой
  • Обновите все сторонние библиотеки до последней версии, поскольку сбой в последних ОС вызывает
  • Посмотрите в официальной документации, чтобы правильно реализовать эти библиотеки. Например, страница устранения неполадок на веб-сайте SDK может помочь решить эту проблему. Например, Dynamsoft Camera SDK уже решил эту проблему здесь
  • Посмотрите в трекер проблем библиотек для этой проблемы. Например, в библиотеке Android-Permission закрыт с точно таким же журналом.

  • Если ваш проект реагирует на нативные, здесь идет длинное обсуждение here

Предложение: я хочу добавить еще несколько строк с предложением @Martin Zeitler об использовании Crashlytics.

Я рекомендую вам настроить ваш сбой в Firebase Crashlytics Отчеты. Потому что иногда одного лишь следа стека недостаточно для воспроизведения авария.

С помощью функции настройки вы сможете получить,

  • Идентификатор пользователя

  • Состояние приложения

  • События, которые были выполнены до аварии

Что, безусловно, поможет вам восстановить аварию и исправить ее.

Ответ 3

Введение

Для людей, говорящих:

did you resolve this issue? It 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 

Есть ли у У вас дополнительный журнал причин? Это очень помогло бы.

Это ваш журнал сбоев:

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)

Сравните с этим журналом сбоев (идентичные номера строк и поток кода):

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)

Эта строка отличается:

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

и:

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

с журналом дополнительной причины:

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)

ПРИМЕЧАНИЕ в android.support.v4.app строках.

См. Android-приложение случайным образом вылетает при открытии приложения

Исправления

Пакеты классов android.support или суффикс * Compat

(1) AndroidX

(Я) Эта проблема имеет множество причин из моего поиска в Интернете. Распространенной причиной, по-видимому, является использование android.support class packages или наличие *Compat suffix. Просмотрите свои файлы build.gradle для android.support.v4 и т.д...

(ii) Поскольку иногда это не происходит при тестировании, я полагаю, что только при развертывании android.support.v4 и т.д. используется проблемная библиотека устройств на некоторых устройствах или API.

  • Примечание: с выпуском Android 9.0 (API level 28) появился новый версия библиотеки поддержки под названием AndroidX, которая является частью Jetpack. Библиотека AndroidX содержит существующую библиотеку поддержки а также включает в себя последние компоненты Jetpack.

  • Вы можете продолжать использовать библиотеку поддержки. Исторические артефакты (версии 27 и более ранние, и упакованные как android.support.*) останется доступным на Google Maven. Тем не менее, все новые библиотеки разработка будет происходить в библиотеке AndroidX.

  • Мы рекомендуем использовать библиотеки AndroidX во всех новых проектах. Вы Также следует рассмотреть возможность переноса существующих проектов в AndroidX. Настройка библиотеки поддержки

  • Библиотеки поддержки теперь доступны через Google Maven репозиторий. Мы больше не поддерживаем загрузку библиотек через SDK Manager, и эта функциональность скоро будет удалена..

  • Примечание. После включения библиотеки поддержки в проект приложения мы настоятельно рекомендуем вам уменьшить, запутать и оптимизировать свой приложение для выпуска. В дополнение к защите вашего исходного кода с запутывание, сжатие удаляет неиспользуемые классы из любых библиотек, которые вы включить в ваше приложение, которое сохраняет размер загрузки вашего приложение как можно меньше.

  • Примечание: если вы включаете несколько библиотек поддержки, минимальный SDK версия должна быть самой высокой версией, требуемой любым из указанных библиотеки. Например, если ваше приложение включает в себя v14 Preference Библиотека поддержки и библиотека v17 Leanback, ваша минимальная версия SDK должно быть 17 или выше.

Смотрите также:

Пакеты поддержки библиотеки

возможности

(2) реагировать на родные экраны

Это связано с реагировать на родные экраны, и у них есть обходной путь для пожалуйста, посмотрите на эту проблему:

Android вылетает недетерминированно при восстановлении из фона - veedeo.

Ответ 4

Я получаю ту же ошибку. Я решил это, может быть, это помогает некоторым людям:

Проблема была в моей земле /tooldbar.xml. Я перешел на библиотеку Androidx. Я решил свою проблему, меняя проблемные XML файлы.

Не используйте:

<android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">
....
....


</android.support.v4.widget.DrawerLayout>

Вместо этого используйте:

<androidx.drawerlayout.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">
....
....


</androidx.drawerlayout.widget.DrawerLayout>