有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?

我不希望每次我做一些愚蠢的事情时它都会崩溃

另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交


当前回答

我发现这是最简单的解决方案:

    release {
        ...
        buildConfigField 'Boolean', 'enableCrashlytics', 'true'
    }
    debug {
        buildConfigField 'Boolean', 'enableCrashlytics', 'false'
    }

上面的代码行将在BuildConfig文件中创建一个名为enableCrashlytics的静态布尔字段,你可以用它来决定是否初始化Fabric:

    if (BuildConfig.enableCrashlytics)
        Fabric.with(this, new Crashlytics());

注意:使用这种方法,fabric只在发布版本中初始化(如上面的代码所示)。这意味着你需要在一个if块中调用Crashlytics类中的静态方法,该块检查fabric是否已经初始化,如下所示。

if (Fabric.isInitialized())
    Crashlytics.logException(e);

否则,当在模拟器上测试时,在使用singleton()错误之前,应用程序将崩溃。

其他回答

最新的最简单的版本时,使用Gradle构建:

if (!BuildConfig.DEBUG) {
    Fabric.with(this, new Crashlytics());
}

它使用来自Fabric的Crashlytics的内置语法,并自动与Gradle构建一起工作。

我发现这是最简单的解决方案:

    release {
        ...
        buildConfigField 'Boolean', 'enableCrashlytics', 'true'
    }
    debug {
        buildConfigField 'Boolean', 'enableCrashlytics', 'false'
    }

上面的代码行将在BuildConfig文件中创建一个名为enableCrashlytics的静态布尔字段,你可以用它来决定是否初始化Fabric:

    if (BuildConfig.enableCrashlytics)
        Fabric.with(this, new Crashlytics());

注意:使用这种方法,fabric只在发布版本中初始化(如上面的代码所示)。这意味着你需要在一个if块中调用Crashlytics类中的静态方法,该块检查fabric是否已经初始化,如下所示。

if (Fabric.isInitialized())
    Crashlytics.logException(e);

否则,当在模拟器上测试时,在使用singleton()错误之前,应用程序将崩溃。

如果你只想在你的IDE上做这件事,另一种方法是注销插件。显然,它将停止发送报告,而您正在生成构建,无需再次登录。

2022答案使用FirebaseCrashlytics。

有两种情况:

如果你想禁用Crashlytics数据收集的所有应用程序运行(如禁用Crashlytics在调试模式),那么你需要禁用它的清单文件通过设置标志firebase_crashlytics_collection_enabled为false

构建。gradle(应用):

// Next two flags to enable/disable Crashlytics
def enableCrashlyticsInDebugBuild = false
def enableCrashlyticsInReleaseBuild = true


android {
  buildTypes {

        release {
                manifestPlaceholders = [crashlyticsEnabled:"${enableCrashlyticsInReleaseBuild}"]
        }

        debug {
                manifestPlaceholders = [crashlyticsEnabled:"${enableCrashlyticsInDebugBuild}"]
        }
  }
}

然后在清单文件中将其添加到application标签下。

<meta-data
            android:name="firebase_crashlytics_collection_enabled"
            android:value="${crashlyticsEnabled}" />

如果你想禁用Crashlytics的一些用户,当他们选择退出数据收集。

要处理这个问题,您应该使用setCrashlyticsCollectionEnabled方法。

Kotlin API (Java API类似):

FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)

当设置为false时,新值直到下次运行应用程序才适用。

引用:

https://firebase.google.com/docs/crashlytics/customize-crash-reports?platform=android#enable-reporting https://firebase.google.com/docs/reference/kotlin/com/google/firebase/crashlytics/FirebaseCrashlytics#setcrashlyticscollectionenabled

如果你担心BuildConfig。调试没有正确设置,请使用ApplicationInfo代替:

boolean isDebug = ( mAppContext.getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE ) != 0;
Crashlytics crashlytics = new Crashlytics.Builder().disabled( isDebug ).build();
Fabric.with( uIContext, crashlytics );