禁用Android的Firebase crashlytics

Boa*_*rdy 5 android firebase crashlytics

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

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

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

FirebaseCrash.setCrashCollectionEnabled(true);
Run Code Online (Sandbox Code Playgroud)

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

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

小智 18

在您的模块中构建 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"]
    }
Run Code Online (Sandbox Code Playgroud)

在清单中

 <meta-data
       android:name="firebase_crashlytics_collection_enabled"
       android:value="${crashlyticsCollectionEnabled}" />
Run Code Online (Sandbox Code Playgroud)


Ash*_*nki 10

在运行时禁用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);       
Run Code Online (Sandbox Code Playgroud)

防爆

@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);

}
Run Code Online (Sandbox Code Playgroud)

更多

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?");
 }
Run Code Online (Sandbox Code Playgroud)

编辑2

参考:无法通过DEBUG构建禁用带有Firebase的Fabric的Crashlytics

火力地堡Crashlytics文件解释说,一旦报告是在应用程序会话中启用,它不能被禁用。

默认情况下,在创建实例之前执行的ContentProvider命名CrashlyticsInitProvider中启用了Crashlytics报告ApplicationCrashlyticsInitProvider启用或禁用基于元数据值的报告firebase_crashlytics_collection_enabled,默认情况下为true。

如果要禁用报告功能,则必须提供清单元数据并将其设置为false,这一点至关重要:

<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="false" />
Run Code Online (Sandbox Code Playgroud)

在应用初始化期间在logcat中查找消息:

CrashlyticsInitProvider: CrashlyticsInitProvider initialization successful
Run Code Online (Sandbox Code Playgroud)

如果存在该消息,firebase_crashlytics_collection_enabled则为true。如果消息不存在,则您已成功设置了元数据以禁用崩溃报告。

如果元数据丢失或设置为true,则无法使用调用禁用代码中的报告Fabric.with(...)

在对另一个答案的评论中,您表示您尝试使用元数据禁用报告,但未成功。检查拼写错误,并确保将声明正确放置在<application>元素中。在我的测试中,我能够使用元数据禁用报告,然后在运行时启用。

  • 关于确保它位于&lt;application&gt;块中的评论已引起关注。FWIW:现在确认输出已被跳过,并在日志中显示以下消息:`CrashlyticsInitProvider:CrashlyticsInitProvider跳过初始化` (2认同)

Ani*_*OUK 10

使用新的 Firebase Crashlytics SDK,要禁用崩溃报告,您必须使用此方法:setCrashlyticsCollectionEnabled

if (BuildConfig.DEBUG) {
  FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)
}
Run Code Online (Sandbox Code Playgroud)

  • 文档是这样说的: &gt; 是否启用自动数据收集。***当设置为“false”时,新值直到下次运行应用程序时才会应用***。如果您想默认禁用所有应用程序运行的数据收集,请将“firebase_crashlytics_collection_enabled”标志添加到应用程序的 AndroidManifest.xml 中。 (4认同)