有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?
我不希望每次我做一些愚蠢的事情时它都会崩溃
另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交
有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?
我不希望每次我做一些愚蠢的事情时它都会崩溃
另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交
当前回答
注意,你也可以在调试构建中禁用烦人的符号上传:
def crashlyticsUploadStoredDeobsDebug = "crashlyticsUploadStoredDeobsDebug"
def crashlyticsUploadDeobsDebug = "crashlyticsUploadDeobsDebug"
tasks.whenTaskAdded { task ->
if (crashlyticsUploadStoredDeobsDebug.equals(task.name) ||
crashlyticsUploadDeobsDebug.equals(task.name)) {
println "Disabling $task.name."
task.enabled = false
}
}
把它放到构建中。你的应用模块的Gradle。
其他回答
最新的最简单的版本时,使用Gradle构建:
if (!BuildConfig.DEBUG) {
Fabric.with(this, new Crashlytics());
}
它使用来自Fabric的Crashlytics的内置语法,并自动与Gradle构建一起工作。
我知道这是个愚蠢的回答 只需注释掉Fabric。with(this, new Crashlytics());,当你想要发布它时,处理它并取消注释。
我发现这是最简单的解决方案:
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()错误之前,应用程序将崩溃。
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
使用风味或构建配置。为开发构建使用单独的构建标识符,所有的崩溃将继续到一个单独的应用程序。在与同行共享构建或在没有调试器的情况下使用它的情况下可以派上用场。就像这样
productFlavors {
dev {
applicationId "io.yourapp.developement"
}
staging {
applicationId "io.yourapp.staging"
}
production {
applicationId "io.yourapp.app"
}