Mee*_*dar 7 android firebase crashlytics crashlytics-android
想要在应用程序崩溃后从 firebase 获取崩溃报告。是否有可能在 firebase 崩溃中将调试模式日志和生产崩溃日志分开?...因为当我们从生产或调试测试中崩溃时,它并不是很清楚。此外,发生崩溃后,firebase 不会在控制台上反映崩溃报告。我应该怎么做才能获得最新的崩溃报告?除了 firebase 之外,还有其他方法可以获得崩溃报告吗?我已经更新了 firebase crashlytics 所需的库。并遵循教程 - https://firebase.google.com/docs/crashlytics/get-started#android
是否可以在 firebase 崩溃中将调试模式日志和生产崩溃日志分开?
这是常见的做法,甚至可能建议您为测试和生产创建一个单独的项目。下载并放置google-services.json在您的构建风格文件夹中
~/app/src/release/google-services.json~/app/src/debug/google-services.json即使您只有一个用于测试和生产的 Firebase 项目,如果您为开发构建风格设置项目 ID 后缀,您也可以通过应用程序 ID 过滤日志:
~/app/build.gradle
buildTypes {
release {
}
debug {
applicationIdSuffix '.debug'
versionNameSuffix '-dbg'
}
}
Run Code Online (Sandbox Code Playgroud)
在这里您可以看到 Crashlytics 中提供的不同风格
此外,发生崩溃后,firebase 不会在控制台上反映崩溃报告。
第一次设置 crashlytics 时,数据显示在仪表板中可能需要一些时间。但是,如果超过 24 小时,则可能是设置不正确。尝试明确触发崩溃以确保其正常工作。
Button crashButton = new Button(this);
crashButton.setText("Crash!");
crashButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Crashlytics.getInstance().crash(); // Force a crash
}
});
Run Code Online (Sandbox Code Playgroud)
除了 firebase 之外,还有其他方法可以获得崩溃报告吗?
是的,如果需要,您可以拥有多个崩溃报告工具。您或许可以为崩溃报告创建一个包装类,您可以在其中抽象对 Crashlytics 的调用,并且可以在那里添加或更改底层报告平台。
进行迁移到新SDK的相关设置后,重要的是要避免以下错误:
尝试在崩溃时发送崩溃报告。
这可能是由于在 FirebaseCrashlytics 发送报告之前强制崩溃(在我的情况下没有按钮侦听),即Crashlytics 报告端点上传完成。
$ adb devices
$ adb shell setprop log.tag.FirebaseCrashlytics DEBUG
$ adb logcat -s FirebaseCrashlytics
Run Code Online (Sandbox Code Playgroud)
1)第一步:不要强制崩溃并运行应用程序。观察 Crashlyticis logcat 中它是如何正确初始化的。
...
FirebaseCrashlytics: Update app request ID: 1d62cb...
FirebaseCrashlytics: Result was 204.
Crashlytics Reports Endpoint upload complete
Run Code Online (Sandbox Code Playgroud)
2)第二步:强制崩溃(使用按钮或直接)。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setupCrashlytics()
...
}
private fun setupCrashlytics() {
throw RuntimeException("Test crash") //TODO: Clean
}
Run Code Online (Sandbox Code Playgroud)
注意:除了依赖项之外,生成报告唯一需要的就是这个代码。此外,您可以使用FirebaseCrashlytics.getInstance().
然后运行应用程序并检查以下内容:
FirebaseCrashlytics: Crashlytics completed exception processing. Invoking default exception handler.
FirebaseCrashlytics: Attempting to send crash report at time of crash...
Run Code Online (Sandbox Code Playgroud)
此时异常进程记录在Firebase服务器上但是报告还没有发送到控制台,即上传不完整。
3)最后,我们清理或评论崩溃崩溃
private fun setupCrashlytics() {
//throw RuntimeException("Test crash")
}
Run Code Online (Sandbox Code Playgroud)
运行应用程序,让我们检查:
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 ...
Run Code Online (Sandbox Code Playgroud)
这保证了报告到达控制台。
GL
| 归档时间: |
|
| 查看次数: |
13405 次 |
| 最近记录: |