5

我在每个活动中都使用这个:

@Override
public void onStart() {
    super.onStart();
    EasyTracker.getInstance().activityStart(this);
}

@Override
public void onStop() {
    super.onStop();
    EasyTracker.getInstance().activityStop(this);
}

并通过这个文档

我发现:

使用 EasyTracker
要使用 EasyTracker 自动跟踪应用程序中所有未捕获的异常,请将此行添加到您的 analytics.xml 文件中:

<bool name="ga_reportUncaughtExceptions">true</bool>

使用自动异常跟踪跟踪异常后,EasyTracker 会将异常传递给 Thread 的默认异常处理程序。

使用自动异常跟踪时,请记住以下几点:

  1. 通过自动异常跟踪跟踪的所有异常都会在 Google Analytics 中报告为致命异常。
  2. 使用堆栈跟踪自动填充描述字段。

但是当我收到 UncaughtException 并且应用程序崩溃时,在 Google Analytics 描述中,它只显示:

An error occured while executing doInBackground()

不是上述几点中提到的堆栈跟踪。有什么需要补充的吗??

谢谢你

4

2 回答 2

4

我使用一个名为ACRA的开源工具来报告未捕获的异常。它提供比 Google Analytics 或 Flurry 更多的信息,并将报告提交到 Google Doc,您可以在其中收到每个添加报告的电子邮件通知。

其余的我使用谷歌分析。

于 2013-04-24T19:29:15.700 回答
3

您应该使用自定义异常解析器来获取整个堆栈跟踪

import org.apache.commons.lang3.exception.ExceptionUtils;
import com.google.analytics.tracking.android.ExceptionParser;

public class AnalyticsExceptionParser implements ExceptionParser {

public String getDescription(String p_thread, Throwable p_throwable) {
    return "Thread: " + p_thread + ", Exception: " +     ExceptionUtils.getStackTrace(p_throwable);
}
}

并在您的活动中将此设置为默认值,例如

public void setupGoogleAnalyticsCrashReportParser() {

    EasyTracker.getInstance().setContext(this);

    Thread.UncaughtExceptionHandler uncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
    if (uncaughtExceptionHandler instanceof ExceptionReporter) {
        ExceptionReporter exceptionReporter = (ExceptionReporter) uncaughtExceptionHandler;
        exceptionReporter.setExceptionParser(new AnalyticsExceptionParser());
    }
}

希望这对某人有所帮助。

于 2014-02-05T19:08:58.920 回答