为迁移到新的SDK进行相关设置后,避免出现以下错误很重要:
尝试在崩溃时发送崩溃报告。
这可能是由于在 FirebaseCrashlytics 发送报告之前强制发生崩溃(在我的情况下没有监听按钮),也就是说,Crashlytics 报告端点上传完成。
启用 Crashlytics 调试日志记录
$ adb devices
$ adb shell setprop log.tag.FirebaseCrashlytics DEBUG
$ adb logcat -s FirebaseCrashlytics
1) 第一步:不要强制崩溃并运行应用程序。观察 Crashlyticis logcat 中它是如何正确初始化的。
...
FirebaseCrashlytics: Update app request ID: 1d62cb...
FirebaseCrashlytics: Result was 204.
Crashlytics Reports Endpoint upload complete
2) 第二步:强制崩溃(使用按钮或直接)。
MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setupCrashlytics()
...
}
private fun setupCrashlytics() {
throw RuntimeException("Test crash") //TODO: Clean
}
注意: 除了依赖项之外,生成报告唯一需要的就是这段代码。此外,您可以使用FirebaseCrashlytics.getInstance() 登录自定义密钥。
然后运行应用程序并检查以下内容:
FirebaseCrashlytics: Crashlytics completed exception processing. Invoking default exception handler.
FirebaseCrashlytics: Attempting to send crash report at time of crash...
此时Firebase服务器上记录了异常过程但报告尚未发送到控制台,即上传不完整。
3) 最后,我们清理或评论崩溃崩溃
private fun setupCrashlytics() {
//throw RuntimeException("Test crash")
}
运行应用程序并检查:
Attempting to send 1 report(s)
FirebaseCrashlytics: Settings result was: 200
FirebaseCrashlytics: Adding single file 5EDA9D7....cls to report 5EDA9D7...
FirebaseCrashlytics: Sending report to: https://reports.crashlytics.com/spi/v1/platforms/android/apps/.../reports
FirebaseCrashlytics: Crashlytics Reports Endpoint upload complete: 5EDABB42 ...
这保证了报告到达控制台。
GL