在运行时禁用/启用Firebase Crashlytics

时间:2018-03-23 16:55:39

标签: android firebase crashlytics

随着Google发出一系列警告,让用户选择加入崩溃报告(source),我试图为Firebase Crashlytics构建一个选择加入对话框。

为了能够做到这一点,我需要知道Crashlytics目前是否已启用(决定是否显示对话框)。似乎CrashlyticsCore.disabled负责跟踪此信息,但我还没有找到任何方法来访问该值,因为它的软件包是私有的,并且没有访问者。如果启用Firebase Crashlytics,我如何在运行时知道?

我需要做的第二件事是默认禁用崩溃报告,并在用户同意选择加入时启用它。我怀疑是怎么做到的:

AndroidManifest:

<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="false" />

的活动:

boolean userAgrees = true;
CrashlyticsCore core = new CrashlyticsCore.Builder().disabled(!userAgrees).build();
Fabric.with(this,  new Crashlytics.Builder().core(core).build());

throw new RuntimeException("why doesn't this show up in Firebase Crashlytics?");

为什么我的RuntimeException出现在Firebase Crashlytics中?

P.S。在删除这些创建选择加入对话框的尝试时,Crashlytics正常工作。

1 个答案:

答案 0 :(得分:0)

似乎切换到Crashlytics只会在您的应用重启后生效Fabric是一个单例,所有对Fabric.with方法的调用在初始化后都会被忽略。

以下源代码。

public static Fabric with(Context context, Kit... kits) {
    if (singleton == null) {
        Class var2 = Fabric.class;
        synchronized(Fabric.class) {
            if (singleton == null) {
                setFabric((new Fabric.Builder(context)).kits(kits).build());
            }
        }
    }

    return singleton;
}

一种方法是使用SharedPreferences或其他持久存储方法自行跟踪值,并相应地更新UI。