FirebaseCrashlytics.getInstance() 在多进程应用程序中导致应用程序崩溃

Posted

技术标签:

【中文标题】FirebaseCrashlytics.getInstance() 在多进程应用程序中导致应用程序崩溃【英文标题】:FirebaseCrashlytics.getInstance() is Crashing App In Multi-Process App 【发布时间】:2020-11-12 23:03:07 【问题描述】:

从 Fabric Crashlytics 迁移到 FirebaseCrashlytics SDK 后,我在另一个进程上遇到了一些崩溃,而不是主进程。

当在 Activity 中使用另一个 Process 调用 FirebaseCrashlytics.getInstance() 时,即使 Crashlytics 中没有崩溃报告,应用程序也会崩溃而不会生成任何单个堆栈跟踪或任何日志消息。

Firebase Crashlytics 依赖项:

implementation 'com.google.firebase:firebase-crashlytics:17.1.1'

清单中的活动声明:

<activity
        android:name=".view.alarm.AlarmActivity"
        android:process="alarm.process"
        android:screenOrientation="portrait"
        android:showOnLockScreen="true"
        android:showWhenLocked="true"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"
        android:turnScreenOn="true"
        tools:targetApi="o_mr1" />

测试代码:

 try 
     throw RuntimeException("Test Crash")
  
 catch (e:Exception)
     FirebaseCrashlytics.getInstance().recordException(e)
  

FirebaseCrashlytics.getInstance() 的第一次调用会导致应用崩溃。

【问题讨论】:

你可能会在FirebaseCrashlytics.getInstance()之前错过FirebaseApp.initializeApp(applicationContext) @MD 感谢您的回复。但根据文档,如果您已升级到 Firebase Crashlytics SDK,则不再需要显式初始化 Crashlytics。 如果您从 Fabric 迁移到 Firebase,则需要它 @MD 但我没有从 Fabric 迁移。我从一开始就一直在使用 Firebase Crashlytics。 @MD 哦,是的,它现在确实可以正常工作如果可能的话,如果我们从 Fabric 或旧的 Crashlytics SDK 迁移,您能否提供说明我们需要使用 FirebaseApp.initializeApp(applicationContext) 的文档。非常感谢,先生您可以回答我会接受的。 【参考方案1】:

你应该添加

FirebaseApp.initializeApp(applicationContext)

访问前

FirebaseCrashlytics.getInstance()

您可以通过here查看更多信息

【讨论】:

我已经为FirebaseCrashlytics.getInstance().setCustomKey("userId", "0123") getting user id to identify which user got crash but I wrote that code in to my Main activity onCreate() and then try ti crash app through throw RuntimeException("Test Crash") 完成了这段代码,但没有得到任何keyon firebase 控制台有什么问题吗? `

以上是关于FirebaseCrashlytics.getInstance() 在多进程应用程序中导致应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章