有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?
我不希望每次我做一些愚蠢的事情时它都会崩溃
另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交
有没有什么简单的方法可以在开发过程中关闭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");
}
其他回答
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 );
注意,你也可以在调试构建中禁用烦人的符号上传:
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。
步骤1:在build.grade中
buildTypes {
debug {
debuggable true
manifestPlaceholders = [enableCrashlytic:false]
}
release {
debuggable false
manifestPlaceholders = [enableCrashlytic:true]
}
}
步骤2:在manifest中
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${enableCrashlytic}" />
步骤3:在应用程序或第一个活动中
private void setupCrashReport() {
if (BuildConfig.DEBUG) return;
Fabric.with(this, new Crashlytics());
}
我不确定第3步是否必要,但要确保发布版本应该不会崩溃。来源:https://firebase.google.com/docs/crashlytics/customize-crash-reports enable_opt-in_reporting
这里是Crashlytics的Marc。这里有几个方法来禁用Crashlytics,而你正在做你的调试构建!
使用不同的android:versionString进行调试和发布构建,然后从Crashlytics web仪表板禁用调试版本的崩溃报告。 将对Crashlytics.start()的调用包装在检查调试标志的if语句中。您可以使用自定义标志或类似于这里提出的方法:如何检查APK是否有签名或“调试构建”?