android.app.ActivityThread.performLaunchActivity上的java.lang.RuntimeException

时间:2018-12-31 11:47:56

标签: android runtimeexception

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

请帮助我!

6 个答案:

答案 0 :(得分:4)

ActivityThread.java说它是updatePendingConfiguration()registerOnActivityPausedListener(),所以它要么以.onPause()失败,要么无法使用正确的参数调用super()方法-或应用Configuration时出现了问题。

我很乐意解释如何解决该问题,但是问题缺少引发异常的代码。解决此问题的最佳方法可能是使用Firebase Crashlytics之类的东西,以便人们可以确切地知道这是从哪里来的,哪些设备受到了影响(如果应该具体说明的话)。我几乎怀疑这可能是由于使用应用程序的Activity启动Context而未设置标志Intent.FLAG_ACTIVITY_NEW_TASK(请参阅this answer)引起的。

答案 1 :(得分:1)

通过分析日志,可以得出以下假设,

  

任何外部库均引发异常   在项目中使用

说明:基本上,ActivityThread.java引发了异常,更具体地说,第performLaunchActivity()行的2955方法引发了异常。由于堆栈跟踪不包含应用程序的任何内部 class,因此我们可以假定该异常是在外部 class中抛出的,随您在项目中使用的库一起提供。

在这种情况下,可以执行以下解决方法来解决此问题-

  • 查看所有库依赖项和降价可疑项
  • 如果您使用外部库中的自定义视图(例如AdView),则该库最有可能导致此崩溃
  • 由于崩溃是在最新的操作系统中引起的,因此将所有第三方库都升级到最新版本
  • 查看官方文档以正确实现这些库。像是,SDK网站的疑难解答页面可能已解决此确切问题。就像 Dynamsoft Camera SDK 一样,已经解决了此问题here
  • 查看此问题的库的问题跟踪器。例如, Android-Permission 库的closed issue日志完全相同。

  • 如果您的项目是 react native ,则对此项目有很长的讨论here

建议:我想在@Martin Zeitler建议使用Crashlytics的基础上再增加几行。

  

我建议您Customize your Firebase Crashlytics crash reports。因为,有时仅堆栈跟踪不足以重现   崩溃。

通过使用自定义功能,您将能够获得

  • 用户身份

  • 应用程序状态

  • 崩溃前执行的事件

肯定会帮助您重新生成崩溃并进行修复。

答案 2 :(得分:0)

简介

对于那些说:

* {
  box-sizing: border-box;
}
html, body {
  height: 100%;
  margin: 0;
}
.header {
  position: relative;
  height: 95vh;
  background-size: cover;
  background-position: top;
}
.hor-nav {
  position: fixed;
  top: 40px;
  right: 40px;
  z-index: 20;
}
.hor-nav ul{
  list-style-type: none;
}
.hor-nav li {
  float: left;
}
.hor-nav li a {
  display: block;
  text-align: center;
  padding: 14px 16px;
}
.hor-nav li a,
.hor-nav li a:focus {
  text-decoration: none;
  color: white;
}
.hor-nav li a:hover,
.hor-nav li a:active {
  text-decoration: none;
  color: yellow;
  outline: 0;
}

有额外的原因日志吗?这将极大地帮助您。

这是您的崩溃日志:

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) 行。

请参见Android standalone app randomly crashes on app open

修复

android.support类包,或具有* Compat后缀

(1)AndroidX

(i)这个问题来自我的互联网搜索,原因很多。常见原因似乎是使用android.support.v4.app或使用android.support class packages查看*Compat suffix个文件,用于build.gradle等...

(ii)因为有时有时不会在测试中发生,所以仅部署,我猜是android.support.v4等...在某些设备或API上使用了有问题的设备库。

  
      
  • 注意:随着android.support.v4的发布,   支持库版本AndroidX,它是   喷气背包Android 9.0 (API level 28)库包含现有的支持库   并且还包括最新的AndroidX组件。

  •   
  • 您可以继续使用支持库。历史文物   (那些版本为Jetpack及更早版本,并打包为27的版本)   将在android.support.*上保持可用。但是,所有新图书馆   开发将在Google Maven库中进行。

  •   
  • 我们建议在所有新项目中使用AndroidX库。您   还应该考虑将现有项目迁移到AndroidX。   Support Library Setup

  •   
  • 现在可以通过AndroidX获得支持库   资料库。我们不再支持通过以下方式下载库   Google's Maven,该功能将很快删除。.

  •   
  • 注意:在您的应用程序项目中包含支持库后,   我们强烈建议您缩小混淆优化   应用发布。除了保护您的源代码   混淆,缩小将从您的任何库中删除未使用的类   包含在您的应用程序中,以保持您的下载大小   应用程序越小越好。

  •   
  • 注意:如果要包含多个支持库,则最低SDK   版本必须是任何指定版本要求的最高版本   库。例如,如果您的应用同时包含SDK Manager v14   支持库和Preference v17库(您的最低SDK版本)   必须为Leanback或更高。

  •   

另请参阅:

Support Library Packages

features

(2)react-native-screens

  

它与react-native-screens有关,它们具有解决方法   这个问题,请看一下:

Android crashes nondeterministically when restoring from background-veedeo。

答案 3 :(得分:0)

几乎任何情况下都可能发生此崩溃。我遇到了同样的问题,根本原因是在覆盖的IllegalArgumentException中,由错误实施的Comparator引发的Fragment#onViewCreated。片段本身是在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控制台获取崩溃报告,则几乎不可能找到根本原因。我很幸运发生了一次客户事件,这使我对在哪里查找以及如何重现崩溃有深刻见解。您也可以切换到自定义崩溃报告工具,例如HockeyApp或Firebase,以查看整个堆栈跟踪。

答案 4 :(得分:0)

将反混淆(mapping.txt)文件上传到Google Playstore。 阅读以下文档,了解如何生成和上传。

https://support.google.com/googleplay/android-developer/answer/9848633?hl=en

答案 5 :(得分:-1)

我遇到了同样的错误。我解决了它,也许对某些人有帮助:

问题出在我的land / 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>