在 Android ,用于记录 Crashlytics 事件与作为事件源调用类的包装方法

标签: Android
发布时间: 2016/9/26 4:15:47
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个实用方法 Utility.class 是发送 Crashlytics 事件的包装内。

public static void logCrashlyticsEvent(String message) {
     ...
     Crashlytics.getInstance().core.logException(new Exception(message));
     ...
}

问题是每当我使用它从另一个类 Crashlytics 仪表板显示为事件源作为 Utility.class 像这样︰

Utility.java line 106
com.myApp.util.Utility.logCrashlyticsEvent

而不是显示它作为实际的类称为它的人。

有对 Crashlytics 的调用方式包装所以仍会显示为事件源调用类吗?

谢谢你。

编辑︰ 只是为了提高对 @Andre 克拉的解决方案。

public static void logCrashlyticsEvent(HandledException e) {
    Crashlytics.getInstance().core.logException(e);
    Timber.e("Message: %s", e.getMessage());
    // More stuff
}

HandledException:

public class HandledException extends Exception {
    public HandledException(@NonNull String message, Object... args) {
         super(String.format(message, args));
}

}

使用方法︰

Utility.logCrashlyticsEvent(new HandledException("Cast exception, input value1: %s, value2: %s", someValue, anotherValue));

解决方法 1:

您正在创建新的异常,而不是记录源异常,所以解决方案很简单︰

public static void logCrashlyticsEvent(Exception e) {
.
.
     Crashlytics.getInstance().core.logException(e);
.
.
}

若要使用它︰

    try{
        String s=null;
        int size=toString().length();
    }
    catch (NullPointerException e){
        com.myApp.util.Utility.logCrashlyticsEvent(e);
    }

这种方式异常记录你想要它的方式。

官方微信
官方QQ群
31647020