谷歌分析崩溃报告只显示第一行的堆栈跟踪

时间:2013-04-16 09:10:54

标签: android google-analytics crash-reports

我的应用程序使用Google Analytics跟踪异常和崩溃(以及其他问题)。我使用这个函数来获取stacktrace:

public static void sendErrorReportViaGoogleAnalytics(Exception e) {

    e.printStackTrace();
    Tracker myTracker = EasyTracker.getTracker();
    myTracker.sendException(getDescription(e), false);
}

public static String getDescription(Exception t) {

    final StringBuilder result = new StringBuilder();
    result.append(t.toString());
    result.append(',');
    String oneElement;

    for (StackTraceElement element : t.getStackTrace()) {
        oneElement = element.toString();
        result.append(oneElement);
        result.append(",");
    }

    return result.toString();
}

这很好用,在谈论异常时,我只是在异常处理代码的catch部分调用sendErrorReportViaGoogleAnalytics(),但是当遇到崩溃时,我只得到一行stacktrace,比如

Binary XML file line #11: Error inflating class fragment

我设置

<bool name="ga_reportUncaughtExceptions">true</bool>
在analytics.xml中

,因为我正在使用EasyTracker。

如果发生崩溃,我该怎么办才能获得完整的堆栈跟踪?

2 个答案:

答案 0 :(得分:4)

刚刚遇到这个问题。只需将给定代码粘贴到项目的BaseApplication.onCreate()方法或其他位置,即可为未捕获的异常设置自定义ExceptionReporter。并且不要忘记在analytics.xml中声明给定的标志。

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

自定义未捕获例外记者:

ExceptionReporter myHandler =
        new ExceptionReporter(EasyTracker.getInstance(this), GAServiceManager.getInstance(),
                              Thread.getDefaultUncaughtExceptionHandler(), this);

    StandardExceptionParser exceptionParser =
            new StandardExceptionParser(getApplicationContext(), null) {
                    @Override
                    public String getDescription(String threadName, Throwable t) {
                        return "{" + threadName + "} " + Log.getStackTraceString(t);
                    }
                };

    myHandler.setExceptionParser(exceptionParser);

    // Make myHandler the new default uncaught exception handler.
    Thread.setDefaultUncaughtExceptionHandler(myHandler);

答案 1 :(得分:3)

由于您没有描述为了捕获崩溃而实际执行的操作,因此我只能将您发送到文档: https://developers.google.com/analytics/devguides/collection/android/v2/exceptions

如果您使用EasyTracker,您可以声明:

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

否则您可以按照描述实现ExceptionReporter类并将其附加到您的线程。