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

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

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


当前回答

这对我来说很有用:

    releaseCompile  'com.crashlytics.sdk.android:crashlytics:2.9.9'

和在buildTypes:

debug {
ext.enableCrashlytics = false
}

其他回答

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

ext.enableCrashlytics = false

我从Crashlytics找到了解决方案(与Fabric集成)

将以下代码放在应用程序类onCreate()中

Crashlytics crashlytics = new Crashlytics.Builder().disabled(BuildConfig.DEBUG).build();
Fabric.with(this, crashlytics);

编辑:

在Crashalitics 2.3及以上版本中,这是不推荐的。正确的代码是:

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

or

Fabric.with(this, new Crashlytics.Builder().core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()).build());

(复制自Crashlytics deprecated method disabled())


EDIT2:

你也可以选择将它添加到gradle中的buildType中。这个命令禁止发送crashlytics映射文件,并为每个构建生成一个ID,这可以加快那些风格的gradle构建。(它不会在运行时禁用Crashlytics。)请看迈克B的回答。

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

你可以使用一个专用的清单文件调试模式(适用于我与Crashlytics 2.9.7):

创建文件app/src/debug/AndroidManifest.xml并添加以下内容:

<application>

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

</application>

注意,这个元数据元素必须放在debug/AndroidManifest.xml中,而不是放在常规的AndroidManifest.xml中

使用CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()的解决方案不适合我,我发现crashlytics是由CrashlyticsInitProvider在application . oncreate()被调用或任何活动启动之前初始化的,这意味着在应用程序或活动中手动初始化fabric没有效果,因为fabric已经初始化。

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

    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()错误之前,应用程序将崩溃。

有两个选项可以禁用以下版本的Firebase Crashlytics:

添加元标签的应用程序的清单

<元数据android:name="firebase_crashlytics_collection_enabled" android:value="false" />

OR

直接在应用程序中配置(请记住,当设置为false时,新值直到下次运行应用程序才适用)

FirebaseCrashlytics.getInstance () .setCrashlyticsCollectionEnabled(真正的)