如何检查Firebase Crashlytics是否被初始化?

问题描述 投票:0回答:1

以前的Fabric SDK允许这样的检查

if (Fabric.isInitialized()) {
    crashSetParam(CrashParameters.ROOT_NODE, nodeInfoCompat.toString())
    Crashlytics.logException(ex)
}

我无法确定如何在新的Firebase Android SDK中做到这一点,这导致我的junit测试可能会触及这个问题而崩溃。我意识到我可以把它包裹在一个接口中,但我也很好奇如何像上面那样用简单的方式解决。谢谢你。

我也在github上记录了一个问题。

https:/github.comfirebasefirebase-android-sdkissues1437。

如果没有检查,我们在运行单元测试时就会得到这样的东西。

java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process null. Make sure to call FirebaseApp.initializeApp(Context) first.

我已经用下面的方法解决了这个问题。

fun logException(ex: Throwable, nodeInfoCompat: AccessibilityNodeInfoCompat?) {
    // We check to make sure Fabric is initialized or else the tests will fail - see above comment
    try {
        FirebaseCrashlytics.getInstance().setCustomKey(CrashParameters.ROOT_NODE, nodeInfoCompat.toString())
        FirebaseCrashlytics.getInstance().recordException(ex)
    } catch (e: IllegalStateException) {
        Timber.e(e);
    }
}
crashlytics-android
1个回答
0
投票

我发现的另一个解决方案是把这个放在主应用程序类中。

if (FirebaseApp.getApps(getApplicationContext()).isEmpty()) {
FirebaseApp.initializeApp(getApplicationContext());}

我只测试了一下,但是在运行测试的时候,对于isEmpty()总是会返回true,而在正常使用的时候,会返回false。

© www.soinside.com 2019 - 2024. All rights reserved.