有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?
我不希望每次我做一些愚蠢的事情时它都会崩溃
另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交
有没有什么简单的方法可以在开发过程中关闭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()错误之前,应用程序将崩溃。
其他回答
这里是Crashlytics的Marc。这里有几个方法来禁用Crashlytics,而你正在做你的调试构建!
使用不同的android:versionString进行调试和发布构建,然后从Crashlytics web仪表板禁用调试版本的崩溃报告。 将对Crashlytics.start()的调用包装在检查调试标志的if语句中。您可以使用自定义标志或类似于这里提出的方法:如何检查APK是否有签名或“调试构建”?
如果你想捕获所有的崩溃(用于调试和发布版本),但想在Crashlytics仪表板中分离它们,你可以添加这行代码到build.gradle:
debug {
versionNameSuffix "-DEBUG"
}
例如,如果你的应用程序的versionName是1.0.0,你的发布版本将被标记为1.0.0,而调试版本将被标记为1.0.0- debug
有两个选项可以禁用以下版本的Firebase Crashlytics:
添加元标签的应用程序的清单
<元数据android:name="firebase_crashlytics_collection_enabled" android:value="false" />
OR
直接在应用程序中配置(请记住,当设置为false时,新值直到下次运行应用程序才适用)
FirebaseCrashlytics.getInstance () .setCrashlyticsCollectionEnabled(真正的)
在MyApplication#onCreate()中使用
if (!BuildConfig.DEBUG) Crashlytics.start(this);
编辑 如果您升级到Fabric,请使用这个答案。
如果你使用Gradle,只需添加这个到一个风味:
ext.enableCrashlytics = false