首页 文章

在运行时禁用/启用Firebase Crashlytics

提问于
浏览
3

随着谷歌发出一系列关于让用户选择加入崩溃报告的警告(source),我正在尝试为Firebase Crashlytics构建一个选择加入对话框 .

为了能够做到这一点,我需要知道Crashlytics目前是否已启用(决定是否显示对话框) . 似乎 CrashlyticsCore.disabled 负责跟踪这个,但我没有't found any way to access the value because it' s软件包私有,没有访问者 . 如果启用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中?

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

1 回答

  • 0

    似乎切换Crashlytics只会生效 after your app restarts . 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 .

相关问题