如何禁用Crashlytics答案?

禁用Crashlytics错误报告相对比较简单。 。 我也想禁用debugging版本的答案。 然而,

new Crashlytics.Builder().answers(null); 

不起作用,因为显然答案不能为空

 new Crashlytics.Builder().answers(new CustomAnswers()); 

与CustomAnswers正在我的课扩展答案让我一个NPE时调用Answers.getInstance() 。 但是与简单地调用一些enable()方法相比,这种方法开始比较麻烦。

有任何想法吗?

另外一个方面,我真的希望Fabric很快就会更新和改进他们的文档。

Solutions Collecting From Web of "如何禁用Crashlytics答案?"

在我的应用程序,我们做这个老式的方式:

 if (!IS_DEBUG) { Fabric.with(this, new Crashlytics()); } 

工作正常。

当然,您可以使用您需要的任何自定义参数进行初始化。

编辑:

得到debugging布尔值只是使用gradle你的青睐的问题:

 src/ main/ // your app code debug/ AppSettings.Java: public static final boolean IS_DEBUG = true; release/ AppSettings.Java: public static final boolean IS_DEBUG = false; 

编辑:

我build议不要使用BuildConfig.DEBUG,请参阅此文章: http : //www.digipom.com/be-careful-with-buildconfig-debug/

就目前而言,我解决了Java的老方法:

使用一种单例扩展Answers

 public class CustomAnswers extends Answers { private static CustomAnswers instance; private boolean mEnabled; private CustomAnswers(boolean enabled) { super(); mEnabled = enabled; } public static synchronized void init(boolean enabled) { if (instance == null) { instance = new CustomAnswers(enabled); } } public static synchronized CustomAnswers get() { return instance; } @Override public void logSignUp(SignUpEvent event) { if (mEnabled) { super.logSignUp(event); } } // (...) } 

使用Answers实现初始化Crashlytics:

 boolean isDebug = DebugHelper.isDebugVersion(this); CustomAnswers.init(!isDebug); CrashlyticsCore crashlyticsCore = new CrashlyticsCore.Builder().disabled(isDebug).build(); Fabric.with(this, new Crashlytics.Builder() .core(crashlyticsCore).answers(CustomAnswers.get()).build()); 

使用Answers实现事件:

 CustomAnswers.get().logInvite(new InviteEvent()); 

这将禁用正在logging的事件。

请注意,正如我的第一篇文章中所述, Answers.getInstance()将返回null,而不是您的CustomAnswers实例。

试试这个代码

  CrashlyticsCore core = new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build(); Fabric.with(this, new Crashlytics.Builder().core(core).build()); 

要么

 Fabric.with(this, new Crashlytics.Builder().core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()).build());