有没有什么简单的方法可以在开发过程中关闭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()错误之前,应用程序将崩溃。
其他回答
最新的最简单的版本时,使用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 );