如何在Android Studio模拟器中禁用Crashlytics

3
我正在开发一款Android应用程序,并使用Crashlytics来获取崩溃日志。当我在其他设备上安装APK时,这非常有效,因为我无法以其他方式获取堆栈跟踪。
问题在于,在开发中,我经常会在Android Studio的模拟器中导致应用程序崩溃。虽然这些崩溃也由Crashlytics报告,但我想禁用它们,因为这使我的Crashlytics仪表板有点凌乱,我不知道哪些崩溃是在开发过程中造成的,哪些是实际发布到其他设备的APK中存在的问题。
我该如何做到这一点?

请告诉我Crashlytics的名称?是Fabric还是其他的? - Swapnil Kshirsagar
2个回答

3
如果是调试版本(如果需要,您可以在此处使用其他过滤器),则以下内容应该禁用Crashlytics。
    if (BuildConfig.DEBUG) {
        CrashlyticsCore disableCrashlytics = new CrashlyticsCore.Builder().disabled(true).build();
        Fabric.with(getApplication(), new Crashlytics.Builder()
                .core(disableCrashlytics)
                .build());
     }

当我使用Android模拟器时,它是否处于调试构建中? - Felix Eder
当您直接运行或从Android Studio中进行构建APK时,它是Debug版本的构建和Debug APK。 - Shohel Rana
只是为了我理解,如果我在Android Studio中按下“运行'app'”按钮并启动一个模拟设备,这算作调试版本吗? - Felix Eder
@FelixEder 通常情况下应该是这样的...但是请检查你的“Build Variants”窗口,并确认选择了debug(或者如果你使用构建变体,可能会是类似于debug<Flavor>的内容)。 - John O'Reilly
@JohnO'Reilly 我试过了,没问题!非常感谢。 - Felix Eder

3

以下是一种在模拟器或虚拟机上禁用Crashlytics报告的方法,但始终在实际设备上启用它,即使是在调试构建时

if (Build.PRODUCT.startsWith("sdk") || Build.PRODUCT.startsWith("vbox")) {
    Log.i(LOG_TAG, "Disabling Crashlytics reporting");
    CrashlyticsCore disabled = new CrashlyticsCore.Builder().disabled(true).build();
    Fabric.with(getApplication(), new Crashlytics.Builder().core(disabled).build());
} else {
    Log.i(LOG_TAG, "Enabling Crashlytics reporting");
    Fabric.with(getApplication(), new Crashlytics());
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接