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

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

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


当前回答

所选的答案不再正确。谷歌改变了Crashlytics的整合。我目前的版本是2.9.1,我唯一要做的是,添加实现'com.crashlytics.sdk.android:crashlytics:2.9.1'到我的Gradle文件。没有更多的事情需要,很好,但这意味着Crashlytics一直在运行。

解决方案1

只在发布版本编译Crashlytics:

dependencies {
   ...
   releaseImplementation 'com.crashlytics.sdk.android:crashlytics:2.9.1' // update version
}

解决方案2

如果你想额外配置Crashlytics,那么解决方案1是行不通的,因为在调试版本中找不到Crashlytics类。因此,将Gradle实现更改为:

implementation 'com.crashlytics.sdk.android:crashlytics:2.9.1' // update version

然后转到你的Manifest,在应用程序标签中添加以下元数据标签:

<application
        android:name="...>

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

...

</application>

添加到您的启动活动(只需要一次,而不是每个活动)

if (!BuildConfig.DEBUG) { // only enable bug tracking in release version
   Fabric.with(this, new Crashlytics());
}

这只会在发布版本中启用Crashlytics。注意,还要检查BuildConfig。调试当你配置Crashlytics,例如:

if (!BuildConfig.DEBUG) {
   Crashlytics.setUserIdentifier("HASH_ID");
}

其他回答

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

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

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

OR

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

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

这对我来说很有用:

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

和在buildTypes:

debug {
ext.enableCrashlytics = false
}

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

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

在MyApplication#onCreate()中使用

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

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

所选的答案不再正确。谷歌改变了Crashlytics的整合。我目前的版本是2.9.1,我唯一要做的是,添加实现'com.crashlytics.sdk.android:crashlytics:2.9.1'到我的Gradle文件。没有更多的事情需要,很好,但这意味着Crashlytics一直在运行。

解决方案1

只在发布版本编译Crashlytics:

dependencies {
   ...
   releaseImplementation 'com.crashlytics.sdk.android:crashlytics:2.9.1' // update version
}

解决方案2

如果你想额外配置Crashlytics,那么解决方案1是行不通的,因为在调试版本中找不到Crashlytics类。因此,将Gradle实现更改为:

implementation 'com.crashlytics.sdk.android:crashlytics:2.9.1' // update version

然后转到你的Manifest,在应用程序标签中添加以下元数据标签:

<application
        android:name="...>

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

...

</application>

添加到您的启动活动(只需要一次,而不是每个活动)

if (!BuildConfig.DEBUG) { // only enable bug tracking in release version
   Fabric.with(this, new Crashlytics());
}

这只会在发布版本中启用Crashlytics。注意,还要检查BuildConfig。调试当你配置Crashlytics,例如:

if (!BuildConfig.DEBUG) {
   Crashlytics.setUserIdentifier("HASH_ID");
}