web-dev-qa-db-ja.com

Android.app.ActivityThread.performLaunchActivityでのjava.lang.RuntimeException

Google Play Consoleから、Java.lang.RuntimeExceptionは "原因:"なしで発生します

以下のログは、Google Play Consoleのクラッシュログからコピーされます。
これは、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)

これに関して私を助けてください!

25
San Moohak

ActivityThread.JavapdatePendingConfiguration() または registerOnActivityPausedListener() であるため、.onPause()で失敗するか、super()メソッド-または、適用されているConfigurationに問題があります。

問題を解決する方法を説明したいと思いますが、質問には例外をスローするコードがありません。これに取り組む最善の方法は、似たようなものを採用することです Firebase Crashlytics 。これにより、これがどこから来ているのか、どのデバイスが影響を受けているのかを確認できます(これが特定の場合)。フラグIntent.FLAG_ACTIVITY_NEW_TASKを設定せずに、ActivityをアプリケーションのContextで開始したことが原因である可能性が高いと思います(参照: この回答 )。

4
Martin Zeitler

ログの分析から、次の仮定を行うことができます。

例外は、プロジェクトで使用されている外部ライブラリのいずれかでスローされます

説明:基本的に、例外は_ActivityThread.Java_によってスローされます。具体的には、_2955_のperformLaunchActivity()メソッドが例外をスローしました。スタックトレースにアプリケーションのinternalclassが含まれていないため、例外がexternalでスローされたと想定できますclassは、プロジェクトで使用しているライブラリに付属しています。

その場合は、次の回避策を実行してこれを整理できます-

  • すべてのライブラリの依存関係を調べ、疑わしいものをマークダウンする
  • 外部ライブラリからのカスタムビュー(AdViewなど)を使用している場合、そのライブラリがこのクラッシュを引き起こす可能性が最も高い
  • 最新のOSでクラッシュが発生しているため、すべてのサードパーティライブラリを最新バージョンにアップグレードします。
  • これらのライブラリを正しく実装するには、公式ドキュメントをご覧ください。同様に、SDKのWebサイトのトラブルシューティングページには、この正確な問題の解決策がある場合があります。同様に、Dynamsoft Camera SDKはすでにこの問題に対処しています here
  • この問題については、ライブラリの問題トラッカーを調べてください。たとえば、Android-Permissionライブラリには クローズドイシュー とまったく同じログがあります。

  • プロジェクトがreact nativeの場合、それについて長い議論があります here

Suggestion:@Martin Zeitlerが提案する Crashlytics の使用を提案して、さらに数行追加します。

Firebase Crashlyticsクラッシュレポートをカスタマイズする をお勧めします。スタックトレースだけではクラッシュを再現できない場合があるためです。

カスタマイズ機能を使用することにより、

  • ユーザーのアイデンティティ

  • アプリの状態

  • クラッシュ前に実行されたイベント

これは確かにクラッシュを再生成して修正するのに役立ちます。

2
Roaim

このクラッシュは、文字通り何からでも起こる可能性があります。私は同じ問題を抱えていて、根本的な原因は、オーバーライドされたFragment#onViewCreated内で誤って実装されたIllegalArgumentExceptionによってスローされたComparatorでした。フラグメント自体は、AppCompatActivity#onCreate中に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)

もちろん、Google Play Consoleからのクラッシュレポートだけでは、根本的な原因を見つけることはほとんど不可能です。私は運が良かったので、事故の再現場所と再現方法を教えてもらいました。スタックトレース全体を表示するには、HockeyAppやFirebaseなどのカスタムクラッシュレポートツールに切り替えることもできます。

0
Konsumierer

はじめに

言う人々のために:

_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 
_

[〜#〜]あなた[〜#〜]に余分な原因を与えるかログ?それは非常に役立ちます。

これはクラッシュログです。

_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)
_

[〜#〜]ノート[〜#〜]at_Android.support.v4.app_行。

参照 Androidスタンドアロンアプリがアプリを開くとランダムにクラッシュする

修正

Android.supportクラスパッケージ、または* Compatサフィックス

(1) AndroidX

(i)この問題には、私のインターネット検索からの無数の原因があります。一般的な原因は、_Android.support class packages_の使用、または_*Compat suffix_の使用です。 レビュー_build.gradle_の_Android.support.v4_ファイルなど...

(ii)ときどきテストでは発生しないため、展開のみが_Android.support.v4_など...一部のデバイスまたはAPIでの問題のあるデバイスライブラリの使用だと思います。

  • 注:Android 9.0 (API level 28)のリリースに伴い、Jetpackの一部であるAndroidXと呼ばれるサポートライブラリの新しいバージョンがあります。 AndroidXライブラリには、既存のサポートライブラリと最新のJetpackコンポーネントが含まれています。

  • サポートライブラリは引き続き使用できます。過去のアーティファクト(_27_以前のバージョンであり、_Android.support.*_としてパッケージ化されているもの)は、_Google Maven_で引き続き利用できます。ただし、新しいライブラリの開発はすべてAndroidXライブラリで行われます。

  • すべての新しいプロジェクトでAndroidXライブラリを使用することをお勧めします。また、既存のプロジェクトをAndroidXに移行することも検討する必要があります。 サポートライブラリのセットアップ

  • サポートライブラリは_Google's Maven_リポジトリから利用できるようになりました。 _SDK Manager_を介したライブラリのダウンロードはサポートされなくなりました。その機能は間もなく削除されます。

  • 注:サポートライブラリをアプリケーションプロジェクトに含めた後、shrinkobfuscate、およびoptimizeアプリのリリース。ソースコードを難読化して保護することに加えて、圧縮により、アプリケーションに含めるライブラリから未使用のクラスが削除され、アプリケーションのダウンロードサイズが可能な限り小さくなります。

  • 注:複数のサポートライブラリを含める場合、SDKの最小バージョンは、指定したライブラリのいずれかが必要とする最も高いバージョンでなければなりません。たとえば、アプリに_v14_ Preferenceサポートライブラリと_v17_ Leanbackライブラリの両方が含まれている場合、SDKの最小バージョンは_17_以降である必要があります。

以下も参照してください。

サポートライブラリパッケージ

機能

(2)反応ネイティブ画面

それは反応ネイティブ画面に関連しており、彼らはこの問題の回避策を持っています、見てください:

Androidがバックグラウンドから復元するときに非決定的にクラッシュします -veedeo。

0
Jon Goodwin