如何使用 Firebase (Crashlytics) 记录非致命(捕获)异常

How to log non-fatal (caught) exceptions with Firebase (Crashlytics)

我开始在我的项目中使用 Firebase (Crashlytics) 来跟踪应用程序崩溃。它与崩溃完美配合,但我如何记录非致命崩溃,即捕获异常。我试过 Crashlytics.logException(e) 但它不起作用。我在仪表板中看不到任何报告。我看到了建议使用 FirebaseCrash.report(t) 的答案,但是这个 class 在最新版本的 Firebase 中不存在。那么有人知道它是怎么做到的吗?

依赖关系:

implementation 'com.google.firebase:firebase-core:16.0.0'
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.3'

您可以使用

FirebaseCrashlytics.getInstance().recordException(e)

在 crashlytics 上记录非致命问题

对于新的 Firebase Crashlytics,您应该使用 recordException(@NonNull Throwable throwable)

...
catch (e: Exception) {
    FirebaseCrashlytics.getInstance().recordException(e)
}
...

这里firebase documentation说明

模块build.gradle

 apply plugin: 'com.google.firebase.crashlytics'
 apply plugin: 'com.google.gms.google-services'
  android {...

 dependencies {
   implementation 'com.google.firebase:firebase-analytics-ktx:17.5.0'
   implementation 'com.google.firebase:firebase-crashlytics-ktx:17.2.1'

项目build.gradle

   dependencies {
    classpath "com.android.tools.build:gradle:4.0.1"
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72"
    classpath 'com.google.gms:google-services:4.3.3'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.3.0'
}

MainActivity.kt

 class MainActivity : AppCompatActivity() {
    companion object {
         lateinit var mCrash: FirebaseCrashlytics           
         lateinit var instance: MainActivity
         private set
     }
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
         instance = this
        FirebaseApp.initializeApp(instance)
         mCrash = FirebaseCrashlytics.getInstance()
           val exception = Exception("test Exception")
           mCrash.recordException(exception)

确保在 Application class 中添加以下代码,这些代码已附在 AndroidManifest.xml -

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        .
        .
        .
        FirebaseApp.initializeApp(this);
        FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
        .
        .
        .
    }
}

然后调用预期的方法-

FirebaseCrashlytics.getInstance().recordException(myException)