Crashlytics.getInstance() 返回 null 以记录自定义异常

Posted

技术标签:

【中文标题】Crashlytics.getInstance() 返回 null 以记录自定义异常【英文标题】:Crashlytics.getInstance() returns null for logging custom exceptions 【发布时间】:2017-05-07 04:18:31 【问题描述】:

我正在尝试按照doc 中的建议记录捕获的异常

在我的一项活动中:

@Override
public void failure(RetrofitError error)                                               
    Crashlytics.getInstance().core.log(error.getMessage());
    Crashlytics.getInstance().core.logException(error.getCause());

但这再次导致 Fabric 仪表板出现致命异常:

致命异常:java.lang.NullPointerException 尝试从空对象引用上的字段“com.crashlytics.android.core.CrashlyticsCore com.crashlytics.android.Crashlytics.core”读取

我正在 AndroidApplication 中初始化 Fabric:

CrashlyticsCore core = new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build();
Fabric.with(this, new Answers(), new Beta(), core, new TwitterCore(authConfig), new Digits.Builder().build());

我是否需要为每个需要自定义日志记录的活动初始化 Fabric?

【问题讨论】:

来自 Fabric 的 Mike。在 onCreate 中初始化 Fabric 应该是您需要做的所有事情。在 Fabric 完全初始化之前,您是否在 Retrofit Error 中记录了这些日志? @MikeBonnell 不,这在应用程序初始化后发生得很好 【参考方案1】:

我的应用中有类似的设置。我像这样初始化 Crashlytics:

Crashlytics crashlyticsKit = new Crashlytics.Builder()
            .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
            .build();

    Fabric.with(this, crashlyticsKit);

但是我只是像这样使用 Crashlytics 日志方法:

if (!BuildConfig.DEBUG) 
    Crashlytics.log(message);

【讨论】:

我的错误来自生产,所以!BuildConfig.DEBUG check 不会解决问题。 Crashlytics.getInstance() 仍然会返回 null 不知道为什么如果您的应用程序子类已在清单文件中注册,为什么它会为空。如果您只使用 Crashlytics.log(message) 方法,它仍然会崩溃吗?

以上是关于Crashlytics.getInstance() 返回 null 以记录自定义异常的主要内容,如果未能解决你的问题,请参考以下文章