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

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

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


当前回答

在MyApplication#onCreate()中使用

if (!BuildConfig.DEBUG) Crashlytics.start(this);

编辑 如果您升级到Fabric,请使用这个答案。

其他回答

根据谷歌使用此代码禁用Crashlytics,它也将改善构建过程。

reference-https: / / developer.android.com/studio/build/optimize-your-build

2019的答案

我一直在尝试只在发行版中启用Crashlytics,在调试中禁用2小时,检查Firebase控制台,看看异常是否上传。

有两种可能的方法。

选项1

它工作,但如果你在调试构建调用任何Crashlytics方法,应用程序将崩溃。

app / build.gradle

android {
    buildTypes {
        release {
            manifestPlaceholders = [crashlyticsEnabled: true]
        }
        debug {
            manifestPlaceholders = [crashlyticsEnabled: false]
        }

AndroidManifest.xml

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

选项2

如果允许您调用Crashlytics方法而不检查BuildConfig,则可以选择此方法。调试。有了这个设置,你可以安全地调用Crashlytics.logException()这样的方法——它们在调试版本中什么都不做。我在调试中没有看到报告被上传。

app / build.gradle

android {
    buildTypes {
        release {
            ext.enableCrashlytics = true
        }
        debug {
            ext.enableCrashlytics = false
        }

AndroidManifest.xml

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

应用程序onCreate ()

val crashlytics = Crashlytics.Builder()
    .core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
    .build()
Fabric.with(this, crashlytics)

另一个我喜欢的简单解决方案,因为它不需要不同的清单文件:

步骤1 -在build.gradle中定义清单占位符

android {
    ...
    buildTypes {
        release {
            manifestPlaceholders = [crashlytics:"true"]
        }
        debug {
            manifestPlaceholders = [crashlytics:"false"]
        }
    }
    ...
}

步骤2 -在AndroidManifest.xml中使用它们

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

这里是Crashlytics的Marc。这里有几个方法来禁用Crashlytics,而你正在做你的调试构建!

使用不同的android:versionString进行调试和发布构建,然后从Crashlytics web仪表板禁用调试版本的崩溃报告。 将对Crashlytics.start()的调用包装在检查调试标志的if语句中。您可以使用自定义标志或类似于这里提出的方法:如何检查APK是否有签名或“调试构建”?

如果你使用Gradle,只需添加这个到一个风味:

ext.enableCrashlytics = false