禁用Crashlytics错误报告相对straight forward.。我也想禁用Answers for debug builds。但是,
new Crashlytics.Builder().answers(null);
不起作用,因为显然答案不能为空并且
new Crashlytics.Builder().answers(new CustomAnswers());
使用CustomAnswers作为我的类扩展Answers在调用Answers.getInstance()
时获取NPE。但与简单地调用一些enable()方法相比,这种方法很难开始。
有什么想法吗?
另一方面,我真的希望Fabric能够尽快更新和改进他们的文档。
答案 0 :(得分:4)
在我的应用上,我们采用老式的方式:
if (!IS_DEBUG) {
Fabric.with(this, new Crashlytics());
}
工作正常。
当然,您可以使用您需要的任何自定义参数进行初始化。
修改强>
获取调试布尔值只需要使用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;
修改强>
我建议不要使用BuildConfig.DEBUG,请参阅此文章:http://www.digipom.com/be-careful-with-buildconfig-debug/
答案 1 :(得分:3)
目前,我用旧的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());
这将禁用正在记录的事件。
请注意,正如我在第一篇文章中所述,Answers.getInstance()
将返回null,而不是CustomAnswers
实例。
答案 2 :(得分:-1)
试试此代码
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());