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() 在多进程应用程序中导致应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章