我正在开发一个android应用,并集成了firebase和firebase crashlytics SDK。
我想允许用户禁用崩溃报告(以确保GDPR遵从性-我认为崩溃报告与GDPR相关),因此需要一种方法使用户能够通过应用程序设置禁用崩溃报告。
我在https://firebase.google.com/docs/crash/disable-sdk找到了文档,但是当我尝试一行的时候:
FirebaseCrash.setCrashCollectionEnabled(true);
Android Studio给我错误cannot resolve symbol 'FirebaseCrash'
这需要在应用运行时以编程方式完成。
答案 0 :(得分:9)
使用新的Firebase Crashlytics SDK,要禁用崩溃报告,您必须使用此method : setCrashlyticsCollectionEnabled
if (BuildConfig.DEBUG) {
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)
}
答案 1 :(得分:4)
在运行时禁用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);
Ex
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 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);
setContentView(R.layout.activity_main);
}
更多
boolean Agrees = value;
if(Agrees)
{
Fabric.with(this,new Crashlytics());
}
else
{
CrashlyticsCore core = new CrashlyticsCore.Builder().disabled(true).build();
Fabric.with(this, new Crashlytics.Builder().core(core).build());
throw new RuntimeException("why doesn't this show up in Firebase Crashlytics?");
}
编辑2
Ref:Fabric's Crashlytics with Firebase can't be disabled for DEBUG builds
Firebase Crashlytics documentation解释说,一旦在应用会话中启用了报告功能,就无法将其禁用。
默认情况下,名为{em> CrashlyticsInitProvider 的ContentProvider
中启用了Crashlytics报告,该报告在创建Application
实例之前执行。 CrashlyticsInitProvider 启用或禁用基于元数据值firebase_crashlytics_collection_enabled
的报告,该值默认为true。
如果要禁用报告功能,则必须提供清单元数据并将其设置为false,这一点至关重要:
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
在应用初始化期间查看消息中的logcat:
CrashlyticsInitProvider: CrashlyticsInitProvider initialization successful
如果存在该消息,则firebase_crashlytics_collection_enabled
为真。如果消息不存在,则说明您已经成功设置了元数据以禁用崩溃报告。
如果元数据丢失或设置为true,则无法通过调用Fabric.with(...)
来禁用代码中的报告。
在对另一个答案的评论中,您表示您尝试使用元数据禁用报告,但未成功。检查拼写错误,并确保将声明正确放置在<application>
元素中。在我的测试中,我能够使用元数据禁用报告,然后在运行时启用。
答案 2 :(得分:1)
在您的模块中构建gradle ...
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}" />
答案 3 :(得分:1)
使用新的Firebase Crashlytics Beta替代Fabric 1:
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)
答案 4 :(得分:0)
FirebaseCrash.setCrashCollectionEnabled(true);
。更多https://firebase.google.com/docs/crash/
FirebaseCrash.setCrashCollectionEnabled(true);
替换为
Fabric.with(this, new Crashlytics());
答案 5 :(得分:0)
如果您想完全禁用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>
答案 6 :(得分:0)
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(!BuildConfig.DEBUG)