android - 通过标签管理器在 Google Analytics v4 中的完整堆栈跟踪

标签 android google-analytics crash-reports google-tag-manager acra

我对 crash tracking with Analytics 有点困惑. AFIK 只能存储在不再超过 200 字节(每个属性)的 Analytics 字符串中。所以不可能看到完整的堆栈跟踪,因为它们通常比 200 个字符长得多。

然而,使用 Analytics v2 API,这可以通过 EasyTracker 实现,如 described here .还有一些使用 ga_reportUncaughtExceptions 属性的半重复,如下所示:Google Analytics crash report only shows first line of stack traceException stack trace lost in Google Analytics v2 for Android?

由于我使用的是 Tag-Manager,所以我无法使用这些解决方案,我已经想出了如何使用 Tag-Manager 正确跟踪前 200 字节的崩溃,但是完整的堆栈跟踪是什么?

我还使用 ACRA 为用户提供一种直接与我们联系的方式(以堆栈跟踪作为附件),因此与 Google 崩溃报告器的直接连接停止并且 Google Play 控制台没有显示崩溃。

最佳答案

对于 Android 中所有未捕获的异常,可以在 Google Analytics v4 中发送完整的堆栈跟踪。

在您的 Application 类中将自动 Activity 跟踪设置为 true。

    // Enable automatic activity tracking for your app
    tracker.enableAutoActivityTracking(true);

进一步覆盖StandardExceptionParser 类的getDescription 方法。 Throwable 包含堆栈跟踪元素数组,如果将其转换为字符串格式,将成为我们在日志中看到的堆栈跟踪。

    public class AnalyticsExceptionParser extends StandardExceptionParser {

    public AnalyticsExceptionParser(Context context, Collection<String> additionalPackages) {
        super(context, additionalPackages);
    }

    @Override
    protected String getDescription(Throwable cause,
        StackTraceElement element, String threadName) {

        StringBuilder descriptionBuilder = new StringBuilder();
        final Writer writer = new StringWriter();
        final PrintWriter printWriter = new PrintWriter(writer);
        cause.printStackTrace(printWriter);
        descriptionBuilder.append(writer.toString());
        printWriter.close();

        return descriptionBuilder.toString();
    }
}

最后,将您的AnalyticsExceptionParser 提供给ExceptionReporter 实例。

    public class MyApplication extends Application {

        @Override
        public void onCreate() {
        ...

            ExceptionReporter reporter = new ExceptionReporter(getTracker(), Thread.getDefaultUncaughtExceptionHandler(), this);
            reporter.setExceptionParser(new AnalyticsExceptionParser(this, packages));
            Thread.setDefaultUncaughtExceptionHandler(reporter);
        }
    }

就是这样。在您的 GA 控制台上的行为 > 崩溃和异常中查看您的崩溃报告。

关于android - 通过标签管理器在 Google Analytics v4 中的完整堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28827838/

相关文章:

google-analytics - 是否可以从重定向链接跟踪链接?

php - 谷歌分析 API : Get specific data using php

java - 如果其他应用程序在设备上崩溃,Android 应用程序会监听

iOS 崩溃日志 NSObject doesNotRecognizeSelector : - at which line?

java - 将微调器值与数组值相乘

android - Google Play 没有显示我的应用

google-analytics - 大查询 : Returning Visits Count Mismatch with google Analytics data

android - 试图从三星的图库中挑选图像

android - 迁移到 Android Studio 后在运行时崩溃 (NoSuchMethodError)

ios - Xamarin、MVVM交叉和崩溃报告