禁用Android的Firebase crashlytics

时间:2018-08-28 17:30:49

标签: android firebase crashlytics

我正在开发一个android应用,并集成了firebase和firebase crashlytics SDK。

我想允许用户禁用崩溃报告(以确保GDPR遵从性-我认为崩溃报告与GDPR相关),因此需要一种方法使用户能够通过应用程序设置禁用崩溃报告。

我在https://firebase.google.com/docs/crash/disable-sdk找到了文档,但是当我尝试一行的时候:

FirebaseCrash.setCrashCollectionEnabled(true);

Android Studio给我错误cannot resolve symbol 'FirebaseCrash'

这需要在应用运行时以编程方式完成。

7 个答案:

答案 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)

新版本的Firebase Crash(称为Crashlytics)不再支持

FirebaseCrash.setCrashCollectionEnabled(true);。更多https://firebase.google.com/docs/crash/

FirebaseCrash.setCrashCollectionEnabled(true);

替换为

Fabric.with(this, new Crashlytics());

看看 https://firebase.google.com/docs/crashlytics/upgrade-from-crash-reporting#set_up_manual_initialization

答案 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)

  1. 禁用自动数据收集(清单)
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
  1. 如果未在应用程序上调试版本,请启用它。
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(!BuildConfig.DEBUG)