From 99154ac86176a168edb0178f1ed1e95f1a9afcc9 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Wed, 13 Jul 2016 12:56:35 -0500 Subject: [PATCH] Include full stacktrace in exception reports --- src/debug/res/xml/google_analytics.xml | 4 +++ .../java/org/tasks/analytics/Tracker.java | 27 ++++++++++++++----- .../res/xml/google_analytics.xml | 1 - 3 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 src/debug/res/xml/google_analytics.xml rename src/{main => release}/res/xml/google_analytics.xml (60%) diff --git a/src/debug/res/xml/google_analytics.xml b/src/debug/res/xml/google_analytics.xml new file mode 100644 index 000000000..74b369d3b --- /dev/null +++ b/src/debug/res/xml/google_analytics.xml @@ -0,0 +1,4 @@ + + + UA-71449238-1 + \ No newline at end of file diff --git a/src/googleplay/java/org/tasks/analytics/Tracker.java b/src/googleplay/java/org/tasks/analytics/Tracker.java index e4b48e7c7..0061eb246 100644 --- a/src/googleplay/java/org/tasks/analytics/Tracker.java +++ b/src/googleplay/java/org/tasks/analytics/Tracker.java @@ -3,9 +3,10 @@ package org.tasks.analytics; import android.content.Context; import com.android.vending.billing.IabResult; +import com.google.android.gms.analytics.ExceptionParser; +import com.google.android.gms.analytics.ExceptionReporter; import com.google.android.gms.analytics.GoogleAnalytics; import com.google.android.gms.analytics.HitBuilders; -import com.google.android.gms.analytics.StandardExceptionParser; import com.google.common.base.Strings; import org.tasks.BuildConfig; @@ -20,8 +21,8 @@ public class Tracker { private final GoogleAnalytics analytics; private final com.google.android.gms.analytics.Tracker tracker; - private final StandardExceptionParser exceptionParser; - private Context context; + private final ExceptionParser exceptionParser; + private final Context context; @Inject public Tracker(@ForApplication Context context) { @@ -29,10 +30,22 @@ public class Tracker { analytics = GoogleAnalytics.getInstance(context); tracker = analytics.newTracker(R.xml.google_analytics); tracker.setAppVersion(Integer.toString(BuildConfig.VERSION_CODE)); - exceptionParser = new StandardExceptionParser(context, null); - if (BuildConfig.DEBUG) { - analytics.setDryRun(true); - } + exceptionParser = new ExceptionParser() { + @Override + public String getDescription(String thread, Throwable throwable) { + StringBuilder stack = new StringBuilder(); + for (StackTraceElement element : throwable.getStackTrace()) { + stack.append(element.toString()).append("\n"); + } + return String.format("%s {%s} %s", throwable.getClass().getName(), thread, stack.toString()); + } + }; + ExceptionReporter reporter = new ExceptionReporter( + tracker, + Thread.getDefaultUncaughtExceptionHandler(), + context); + reporter.setExceptionParser(exceptionParser); + Thread.setDefaultUncaughtExceptionHandler(reporter); } public void showScreen(String screenName) { diff --git a/src/main/res/xml/google_analytics.xml b/src/release/res/xml/google_analytics.xml similarity index 60% rename from src/main/res/xml/google_analytics.xml rename to src/release/res/xml/google_analytics.xml index ed5c1b3cc..d9480d670 100644 --- a/src/main/res/xml/google_analytics.xml +++ b/src/release/res/xml/google_analytics.xml @@ -1,5 +1,4 @@ UA-43015607-3 - true \ No newline at end of file