我在Google Play崩溃日志中看到了崩溃,这真的让我很困惑。
java.lang.RuntimeException:
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3086)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3229)
at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1926)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:214)
at android.app.ActivityThread.main (ActivityThread.java:6981)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1445)
Caused by: androidx.fragment.app.Fragment$InstantiationException:
at androidx.fragment.app.Fragment.instantiate (Fragment.java:462)
at androidx.fragment.app.FragmentContainer.instantiate (FragmentContainer.java:50)
at androidx.fragment.app.FragmentState.instantiate (FragmentState.java:80)
at androidx.fragment.app.FragmentManagerImpl.restoreAllState (FragmentManager.java:3109)
at androidx.fragment.app.FragmentController.restoreAllState (FragmentController.java:158)
at androidx.fragment.app.FragmentActivity.onCreate (FragmentActivity.java:344)
at androidx.appcompat.app.AppCompatActivity.onCreate (AppCompatActivity.java:85)
at com.autotask.jbarra.kotlinmvvm.MainActivity.onCreate (MainActivity.kt:102)
at android.app.Activity.performCreate (Activity.java:7326)
at android.app.Activity.performCreate (Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3066)
Caused by: java.lang.NoSuchMethodException:
at java.lang.Class.getConstructor0 (Class.java:2328)
at java.lang.Class.getConstructor (Class.java:1725)
at androidx.fragment.app.Fragment.instantiate (Fragment.java:443)
问题是,主要活动的102行没有什么特别的
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) //This is line 102
什么会导致这种情况?为什么oncreate没有抛出这样的方法?它发生在一些用户的设备上,我无法重现它。
我的活动有一个使用废弃构造函数的FragmentPagerAdapter
。我改变了
class MyPagerAdapter(
fragmentManager: FragmentManager,
private val myActivity: MyActivity
) : FragmentPagerAdapter(fragmentManager) // DEPRECATED
到
class MyPagerAdapter(
fragmentManager: FragmentManager,
private val myActivity: MyActivity
) : FragmentPagerAdapter(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)
似乎已经解决了问题
我也有同样的问题。其他答案没有帮助。
对我来说,它看起来像是Proguard。这解释了为什么它只发生在生产/发布版本中,以及为什么我在调试时无法复制它。
如果您遇到OP的问题,请尝试以下操作:
它会崩溃吗?然后尝试使用未混淆的调试版本。如果没有,那么可能是Proguard。
为了修复它,我做了以下操作:
添加:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
请参阅Yaroslav Mytkalyk的答案:片段实例化崩溃,它帮助我解决了这个问题,尽管它现在有点过时了(例如,“runProguard true”已经过时)。
至少现在当我执行上面的步骤时,它不会崩溃。
PS:我这样做是为了将0-arg构造函数添加到我的片段中,正如在其他答案中提到的,因为那是我第一次尝试修复。我相信ProGuard本身就是问题所在,没有必要添加所说的构造函数,但我现在无法测试这个假设。
正在从实例状态束还原活动。还原操作的一部分是重新创建其片段。
您的活动有一个片段,而片段类没有框架所需的0-arg构造函数。
问题内容: 什么是处理这种情况的最佳方法。我处于受控环境中,所以我不想崩溃。 从setTimeout内抛出时,我们将始终获得: 如果抛出发生在setTimeout之前,那么bluebirds catch将捕获它: 结果是: 很棒-但是如何在节点或浏览器中处理这种性质的恶意异步回调。 问题答案: 承诺不是域,它们不会捕获异步回调中的异常。你就是做不到。 然而诺言来捕捉从内抛出的异常/ / 构造函数的
问题内容: 什么是处理这种情况的最佳方法。我处于受控环境中,所以我不想崩溃。 从setTimeout内抛出时,我们将始终获得: 如果抛出发生在setTimeout之前,那么bluebirds catch将捕获它: 结果是: 很棒-但是如何在节点或浏览器中处理这种性质的恶意异步回调。 问题答案: 承诺不是域,它们不会捕获异步回调中的异常。你就是做不到。 然而诺言来捕捉从内抛出的异常/ / 构造函数的
问题内容: 我在Spring中使用javax-validation和hibaernate-validator进行表单验证。除了用于Spring的基本必要JAR文件。 我包括: 验证API-1.1.0.Final hibernate-validator-5.1.0.Final 我读到某处也关注到了spl4j版本:所以我也告诉: 错误原因可以归因于slf4j和log4j兼容性吗? 我使用注释基础验证。
我的应用程序包含“服务定位器”模式的实现。ServiceLocator是一个中央组件,它执行远程EJB的(JNDI)查找,并被我们的几个应用程序/组件(r6-core、Java-API等)使用。ServiceLocator有几个配置选项,其主要目标是启用灵活的(机器独立/应用程序独立)部署场景。另一个目标是保护JNDI/EJB查找样板免受业务逻辑(代码)的影响。 如果将特定EJB配置为仅通过本地调
问题内容: 我目前正在使用node.js应用程序,并且遇到了通常的异步代码问题。 我正在Node的HTTP模块之上实现服务服务器。 该服务器支持(类似表达)路由。例如,我有如下代码: 服务器需要能够承受故障,当传递给任何函数的问题出现时,我不想使整个服务器崩溃。当我编写如下代码时,会发生问题: 我看不到如何在这里捕获错误。我不想因一个服务器端故障而使服务器崩溃,而是要服务500个。 我能够提出的唯
在将其标记为副本之前,请阅读问题。 我在我的谷歌控制台中设置了SHA1和SHA256。 我已经尝试了很多方法,但仍然面临错误。 未处理的异常: 平台异常(sign_in_failed, 还尝试了Flutter和google_sign_in插件:PlatformException(sign_in_failed,com.google.android.gms.common.api.ApiExceptio