禁用Android的firebase crashlytics
我正在开发一个android应用程序,并集成了firebase和firebase crashlytics SDK 我想允许用户禁用崩溃报告(以确保GDPR合规性-我假设崩溃报告与GDPR相关),因此需要一种方法让用户能够通过应用程序设置禁用它 我在上找到了文档,但当我尝试和该行时:禁用Android的firebase crashlytics,android,firebase,crashlytics,Android,Firebase,Crashlytics,我正在开发一个android应用程序,并集成了firebase和firebase crashlytics SDK 我想允许用户禁用崩溃报告(以确保GDPR合规性-我假设崩溃报告与GDPR相关),因此需要一种方法让用户能够通过应用程序设置禁用它 我在上找到了文档,但当我尝试和该行时: FirebaseCrash.setCrashCollectionEnabled(true); Android Studio给了我一个错误无法解析符号“FirebaseCrash” 这需要在应用程序运行时以编程方式完
FirebaseCrash.setCrashCollectionEnabled(true);
Android Studio给了我一个错误无法解析符号“FirebaseCrash”
这需要在应用程序运行时以编程方式完成。FirebaseCrash.setCrashCollectionEnabled(true)新版本的Firebase崩溃(称为Crashlytics)不再支持代码>。更多 被替换为
Fabric.with(this, new Crashlytics());
看一看
在运行时禁用Crashlytics
// Set up Crashlytics, disabled for debug builds
Crashlytics crashlyticsKit = new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build();
Fabric.with(this, crashlyticsKit);
前
更多
编辑2
参考:
说明了一旦在应用程序会话中启用了报告,就不能将其禁用
默认情况下,在创建应用程序
实例之前执行的名为CrashlyticsInitProvider的ContentProvider
中启用Crashlytics报告。CrashlyticsInitProvider根据元数据值启用或禁用报告firebase\u crashlytics\u collection\u enabled
,默认情况下为true
如果要禁用报告,则必须显示清单元数据并将其设置为false:
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
如果消息存在,firebase\u crashlytics\u collection\u enabled
为真。如果消息不存在,则表示您已成功将元数据设置为禁用崩溃报告
如果元数据丢失或设置为true,则无法使用调用Fabric.with(…)
禁用代码中的报告
在对另一个答案的评论中,您指出您尝试使用元数据禁用报告,但未成功。检查拼写错误并确保声明正确放置在
元素中。在我的测试中,我能够使用元数据禁用报告,然后在运行时启用 如果您希望完全禁用Firebase崩溃报告,并且不必添加
com.crashlytics.sdk.android:crashlytics:2.9.1
依赖关系,然后:
将此添加到应用程序的build.gradle:
android {
// ...
defaultConfig {
manifestPlaceholders = [enableCrashReporting:"false"]
....
}
}
然后将其添加到您的AndroidManifest.xml中:
<application ...>
// ...
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${enableCrashReporting}" />
<meta-data
android:name="firebase_analytics_collection_deactivated"
android:value="true"/>
</application>
// ...
在您的模块构建梯度中…
release {
//true value to send the crashlytics to the firebase
manifestPlaceholders = [crashlyticsCollectionEnabled: "true"]
}
debug {
//false value to stop sending the crashlytics to the firebase
manifestPlaceholders = [crashlyticsCollectionEnabled: "false"]
}
在清单中
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${crashlyticsCollectionEnabled}" />
新Firebase Crashlytics beta版取代了Fabric one:
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)
使用新的Firebase Crashlytics SDK,要禁用崩溃报告,必须使用
你使用的是最新版本的firebase吗?谢谢,这正是我想要的,你可能会认为谷歌能够让他们的搜索远离过时的产品文档,我犯了一个错误。我使用了来自的元数据名称(它是“firebase\u crash\u collection\u enabled”),但没有注意到示例中的名称有所不同。您关于确保它位于块中的评论是正确的。FWIW:output now通过日志中的以下消息确认它已被跳过:
CrashlyticsInitProvider:CrashlyticsInitProvider跳过初始化
您有关于此的链接吗?我猜它可能在应用程序中默认为:FirebaseCrashlytics.getInstance()。setCrashlyticsCollectionEnabled(!BuildConfig.DEBUG)
这样开发崩溃就不会混淆产品上发生的崩溃这是文档所说的:>是否启用自动数据收集。当设置为false
时,新值在应用程序的下一次运行之前不会应用。如果您想默认为所有应用程序运行禁用数据收集,请添加firebase\u crashlytics_collection_enabled
标记到你的应用程序的AndroidManifest.xml。这对我(版本17.2.1)有效。但是,尽管禁用,Crashlytics仍会在设备上存储崩溃。每当你再次启用(假设使用相同的设备),它都会清除服务器上的所有内容。如果你正在测试,请记住这一点。
<application ...>
// ...
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${enableCrashReporting}" />
<meta-data
android:name="firebase_analytics_collection_deactivated"
android:value="true"/>
</application>
release {
//true value to send the crashlytics to the firebase
manifestPlaceholders = [crashlyticsCollectionEnabled: "true"]
}
debug {
//false value to stop sending the crashlytics to the firebase
manifestPlaceholders = [crashlyticsCollectionEnabled: "false"]
}
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${crashlyticsCollectionEnabled}" />
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)
if (BuildConfig.DEBUG) {
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)
}
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(!BuildConfig.DEBUG)