From b22466ee66839b1e4f237a552e2749e27ffa8a68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= <mvdan@mvdan.cc> Date: Sat, 26 Dec 2015 19:16:47 +0100 Subject: [PATCH] Add opt-in crash reporting via ACRA Fixes #398. --- CHANGELOG.md | 2 ++ F-Droid/AndroidManifest.xml | 6 ++++++ F-Droid/build.gradle | 4 ++++ F-Droid/res/values/strings.xml | 6 ++++++ F-Droid/src/org/fdroid/fdroid/FDroidApp.java | 10 ++++++++++ 5 files changed, 28 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3281842b0..f88235c3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ ### 0.98 (upcoming release) +* Add opt-in crash reporting via ACRA + * Add support for HTTP basic authentication of repos * Fix repo updating on older devices with little memory diff --git a/F-Droid/AndroidManifest.xml b/F-Droid/AndroidManifest.xml index 7237aea99..76f6e7659 100644 --- a/F-Droid/AndroidManifest.xml +++ b/F-Droid/AndroidManifest.xml @@ -376,6 +376,12 @@ android:name="android.support.PARENT_ACTIVITY" android:value=".FDroid" /> </activity> + <activity android:name="org.acra.CrashReportDialog" + android:theme="@style/AlertDialogThemeDark" + android:process=":error_report" + android:launchMode="singleInstance" + android:excludeFromRecents="true" + android:finishOnTaskLaunch="true" /> <activity android:label="@string/menu_swap" android:name=".views.swap.SwapWorkflowActivity" diff --git a/F-Droid/build.gradle b/F-Droid/build.gradle index 00924c76c..5a64b2160 100644 --- a/F-Droid/build.gradle +++ b/F-Droid/build.gradle @@ -20,6 +20,9 @@ dependencies { compile 'cc.mvdan.accesspoint:library:0.1.3' compile 'commons-net:commons-net:3.4' compile 'org.openhab.jmdns:jmdns:3.4.2' + compile('ch.acra:acra:4.7.0') { + exclude module: 'support-v4' + } androidTestCompile 'commons-io:commons-io:2.2' } @@ -71,6 +74,7 @@ if (!hasProperty('sourceDeps')) { 'com.madgag.spongycastle:pkix:6aba9b2210907a3d46dd3dcac782bb3424185290468d102d5207ebdc9796a905', 'com.madgag.spongycastle:prov:029f26cd6b67c06ffa05702d426d472c141789001bcb15b7262ed86c868e5643', 'com.madgag.spongycastle:core:9b6b7ac856b91bcda2ede694eccd26cefb0bf0b09b89f13cda05b5da5ff68c6b', + 'ch.acra:acra:7ab8ee487aabce180b42af16d1db8fcb3f40970ba3dfa5d4d07e835cea4a4f67', ] } diff --git a/F-Droid/res/values/strings.xml b/F-Droid/res/values/strings.xml index 982929239..e27a65dbe 100644 --- a/F-Droid/res/values/strings.xml +++ b/F-Droid/res/values/strings.xml @@ -379,4 +379,10 @@ <string name="theme_light">Light</string> <string name="theme_dark">Dark</string> <string name="theme_night">Night</string> + + <string name="crash_dialog_title">F-Droid has crashed</string> + <string name="crash_dialog_text">An unexpected error occurred + forcing the application to stop. Would you like to e-mail the + details to help fix the issue?</string> + <string name="crash_dialog_comment_prompt">You can add extra information and comments here:</string> </resources> diff --git a/F-Droid/src/org/fdroid/fdroid/FDroidApp.java b/F-Droid/src/org/fdroid/fdroid/FDroidApp.java index 87ce5a83e..da1eade0a 100644 --- a/F-Droid/src/org/fdroid/fdroid/FDroidApp.java +++ b/F-Droid/src/org/fdroid/fdroid/FDroidApp.java @@ -43,6 +43,9 @@ import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.utils.StorageUtils; +import org.acra.ACRA; +import org.acra.ReportingInteractionMode; +import org.acra.annotation.ReportsCrashes; import org.apache.commons.net.util.SubnetUtils; import org.fdroid.fdroid.Preferences.ChangeListener; @@ -62,6 +65,12 @@ import java.util.Locale; import sun.net.www.protocol.bluetooth.Handler; +@ReportsCrashes(mailTo = "team@f-droid.org", + mode = ReportingInteractionMode.DIALOG, + resDialogTitle = R.string.crash_dialog_title, + resDialogText = R.string.crash_dialog_text, + resDialogCommentPrompt = R.string.crash_dialog_comment_prompt + ) public class FDroidApp extends Application { private static final String TAG = "FDroidApp"; @@ -183,6 +192,7 @@ public class FDroidApp extends Application { } updateLanguage(); super.onCreate(); + ACRA.init(this); // Needs to be setup before anything else tries to access it. // Perhaps the constructor is a better place, but then again,