From 71db3db6a3ca0adadf767efd3f46d9362086e1dc Mon Sep 17 00:00:00 2001
From: James Fenn <18jafenn90@gmail.com>
Date: Fri, 22 Jun 2018 11:00:08 -0400
Subject: [PATCH 01/10] updated gradle files
---
app/build.gradle | 18 +++++++-----------
build.gradle | 6 +++---
crasher/build.gradle | 45 +++++++++++---------------------------------
3 files changed, 21 insertions(+), 48 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 7b3a0de..901a4d4 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,12 +1,12 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 25
- buildToolsVersion "25.0.2"
+ compileSdkVersion 27
+ buildToolsVersion "27.0.3"
defaultConfig {
applicationId "james.crashersample"
minSdkVersion 16
- targetSdkVersion 25
+ targetSdkVersion 27
versionCode 1
versionName "0.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -20,12 +20,8 @@ android {
}
dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
- exclude group: 'com.android.support', module: 'support-annotations'
- })
- compile project(path: ':crasher')
- compile 'com.android.support:appcompat-v7:25.3.1'
- compile 'com.android.support.constraint:constraint-layout:1.0.0'
- testCompile 'junit:junit:4.12'
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation 'com.android.support:appcompat-v7:27.1.1'
+ implementation 'com.android.support.constraint:constraint-layout:1.1.2'
+ implementation project(path: ':crasher')
}
diff --git a/build.gradle b/build.gradle
index 13924ee..461759d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,11 +3,10 @@
buildscript {
repositories {
jcenter()
+ google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.0.0-beta4'
- classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
- classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
+ classpath 'com.android.tools.build:gradle:3.2.0-beta01'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
@@ -17,6 +16,7 @@ buildscript {
allprojects {
repositories {
jcenter()
+ google()
}
}
diff --git a/crasher/build.gradle b/crasher/build.gradle
index 1bd2fc8..8d3bffb 100644
--- a/crasher/build.gradle
+++ b/crasher/build.gradle
@@ -1,36 +1,18 @@
apply plugin: 'com.android.library'
ext {
- bintrayRepo = 'maven'
- bintrayName = 'crasher'
-
- publishedGroupId = 'james.crasher'
- libraryName = 'Crasher'
- artifact = 'crasher'
-
- libraryDescription = 'An easy to use crash reporting library for Android.'
-
- siteUrl = '/~https://github.com/TheAndroidMaster/Crasher'
- gitUrl = '/~https://github.com/TheAndroidMaster/Crasher.git'
-
- libraryVersion = '0.0.1'
-
- developerId = 'TheAndroidMaster'
- developerName = 'James Fenn'
- developerEmail = '18jafenn90@gmail.com'
-
- licenseName = 'The Apache Software License, Version 2.0'
- licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
- allLicenses = ["Apache-2.0"]
+ PUBLISH_GROUP_ID = 'me.jfenn'
+ PUBLISH_ARTIFACT_ID = 'crasher'
+ PUBLISH_VERSION = '0.0.1'
}
android {
- compileSdkVersion 25
- buildToolsVersion "25.0.2"
+ compileSdkVersion 27
+ buildToolsVersion "27.0.3"
defaultConfig {
minSdkVersion 16
- targetSdkVersion 25
+ targetSdkVersion 27
versionCode 1
versionName "0.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -46,15 +28,10 @@ android {
}
dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
- exclude group: 'com.android.support', module: 'support-annotations'
- })
- compile 'com.android.support:appcompat-v7:25.3.1'
- compile 'com.android.support:design:25.3.1'
- compile 'james.buttons:buttons:0.0.3'
- testCompile 'junit:junit:4.12'
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation 'com.android.support:appcompat-v7:27.1.1'
+ implementation 'com.android.support:design:27.1.1'
+ implementation 'james.buttons:buttons:0.0.3'
}
-apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle'
-apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle'
+apply from: 'https://raw.githubusercontent.com/blundell/release-android-library/master/android-release-aar.gradle'
From 4a299704935163e22e92e4093c2154764dd8270d Mon Sep 17 00:00:00 2001
From: James Fenn <18jafenn90@gmail.com>
Date: Fri, 22 Jun 2018 11:34:56 -0400
Subject: [PATCH 02/10] add useful info to emails/stuff
---
.../src/main/java/james/crasher/Crasher.java | 14 ++++++
.../crasher/activities/CrashActivity.java | 44 +++++++++++++------
2 files changed, 44 insertions(+), 14 deletions(-)
diff --git a/crasher/src/main/java/james/crasher/Crasher.java b/crasher/src/main/java/james/crasher/Crasher.java
index 3369ed2..64d96df 100644
--- a/crasher/src/main/java/james/crasher/Crasher.java
+++ b/crasher/src/main/java/james/crasher/Crasher.java
@@ -24,6 +24,7 @@ public class Crasher implements Thread.UncaughtExceptionHandler {
private boolean isCrashActivity = true;
private String email;
+ private String debugMessage;
private Integer color;
public Crasher(Context context) {
@@ -79,6 +80,16 @@ public String getEmail() {
return email;
}
+ public Crasher setDebugMessage(String debugMessage) {
+ this.debugMessage = debugMessage;
+ return this;
+ }
+
+ @Nullable
+ public String getDebugMessage() {
+ return debugMessage;
+ }
+
public Crasher setColor(@ColorInt int color) {
this.color = color;
return this;
@@ -112,6 +123,9 @@ public void uncaughtException(Thread t, final Throwable e) {
if (email != null)
intent.putExtra(CrashActivity.EXTRA_EMAIL, email);
+ if (debugMessage != null)
+ intent.putExtra(CrashActivity.EXTRA_DEBUG_MESSAGE, debugMessage);
+
if (color != null)
intent.putExtra(CrashActivity.EXTRA_COLOR, color);
diff --git a/crasher/src/main/java/james/crasher/activities/CrashActivity.java b/crasher/src/main/java/james/crasher/activities/CrashActivity.java
index aa3f614..233d85a 100644
--- a/crasher/src/main/java/james/crasher/activities/CrashActivity.java
+++ b/crasher/src/main/java/james/crasher/activities/CrashActivity.java
@@ -31,6 +31,7 @@ public class CrashActivity extends AppCompatActivity implements View.OnClickList
public static final String EXTRA_STACK_TRACE = "james.crasher.EXTRA_STACK_TRACE";
public static final String EXTRA_EMAIL = "james.crasher.EXTRA_EMAIL";
+ public static final String EXTRA_DEBUG_MESSAGE = "james.crasher.EXTRA_DEBUG_MESSAGE";
public static final String EXTRA_COLOR = "james.crasher.EXTRA_COLOR";
private Toolbar toolbar;
@@ -45,21 +46,23 @@ public class CrashActivity extends AppCompatActivity implements View.OnClickList
private ImageView stackTraceArrow;
private TextView stackTrace;
+ private String body;
+
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crash);
- toolbar = (Toolbar) findViewById(R.id.toolbar);
- name = (TextView) findViewById(R.id.name);
- message = (TextView) findViewById(R.id.message);
- description = (TextView) findViewById(R.id.description);
- copy = (Button) findViewById(R.id.copy);
- share = (Button) findViewById(R.id.share);
- email = (Button) findViewById(R.id.email);
+ toolbar = findViewById(R.id.toolbar);
+ name = findViewById(R.id.name);
+ message = findViewById(R.id.message);
+ description = findViewById(R.id.description);
+ copy = findViewById(R.id.copy);
+ share = findViewById(R.id.share);
+ email = findViewById(R.id.email);
stackTraceHeader = findViewById(R.id.stackTraceHeader);
- stackTraceArrow = (ImageView) findViewById(R.id.stackTraceArrow);
- stackTrace = (TextView) findViewById(R.id.stackTrace);
+ stackTraceArrow = findViewById(R.id.stackTraceArrow);
+ stackTrace = findViewById(R.id.stackTrace);
setSupportActionBar(toolbar);
actionBar = getSupportActionBar();
@@ -96,14 +99,27 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
getWindow().setNavigationBarColor(colorDark);
}
- name.setText(getIntent().getStringExtra(EXTRA_NAME));
- message.setText(getIntent().getStringExtra(EXTRA_MESSAGE));
+ String nameString = getIntent().getStringExtra(EXTRA_NAME);
+ String messageString = getIntent().getStringExtra(EXTRA_NAME);
+
+ name.setText(nameString);
+ if (messageString != null && messageString.length() > 0)
+ message.setText(messageString);
+ else message.setVisibility(View.GONE);
+
description.setText(String.format(Locale.getDefault(), getString(R.string.msg_crashed), getString(R.string.app_name)));
- stackTrace.setText(getIntent().getStringExtra(EXTRA_STACK_TRACE));
+ String stack = getIntent().getStringExtra(EXTRA_STACK_TRACE);
+ stackTrace.setText(stack);
stackTraceHeader.setOnClickListener(this);
if (BuildConfig.DEBUG)
stackTraceHeader.callOnClick();
+
+ body = nameString + "\n" + (messageString != null ? messageString : "") + "\n\n" + stack
+ + "\n\nAndroid Version: " + Build.VERSION.SDK_INT
+ + "\nDevice Manufacturer: " + Build.MANUFACTURER
+ + "\nDevice Model: " + Build.MODEL
+ + "\n\n" + (getIntent().hasExtra(EXTRA_DEBUG_MESSAGE) ? getIntent().getStringExtra(EXTRA_DEBUG_MESSAGE) : "");
}
@Override
@@ -126,7 +142,7 @@ else if (service instanceof android.text.ClipboardManager)
} else if (v.getId() == R.id.share) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
- intent.putExtra(Intent.EXTRA_TEXT, stackTrace.getText().toString()); //TODO: include device info, app name, build, version, etc
+ intent.putExtra(Intent.EXTRA_TEXT, body);
startActivity(Intent.createChooser(intent, getString(R.string.action_share)));
} else if (v.getId() == R.id.email) {
@@ -135,7 +151,7 @@ else if (service instanceof android.text.ClipboardManager)
intent.setData(Uri.parse("mailto:" + getIntent().getStringExtra(EXTRA_EMAIL)));
intent.putExtra(Intent.EXTRA_EMAIL, getIntent().getStringExtra(EXTRA_EMAIL));
intent.putExtra(Intent.EXTRA_SUBJECT, String.format(Locale.getDefault(), getString(R.string.title_email), name.getText().toString(), getString(R.string.app_name)));
- intent.putExtra(Intent.EXTRA_TEXT, stackTrace.getText().toString()); //TODO: include device info, app name, build, version, etc
+ intent.putExtra(Intent.EXTRA_TEXT, body);
startActivity(Intent.createChooser(intent, getString(R.string.action_send_email)));
} else if (v.getId() == R.id.stackTraceHeader) {
From 415cd090da5f0cf0a9fb9e3530aa37cc987b3242 Mon Sep 17 00:00:00 2001
From: James Fenn <18jafenn90@gmail.com>
Date: Fri, 22 Jun 2018 11:39:34 -0400
Subject: [PATCH 03/10] create useful(ish) utils method
---
.../main/java/james/crasher/utils/CrashUtils.java | 15 +++++++++++++++
1 file changed, 15 insertions(+)
create mode 100644 crasher/src/main/java/james/crasher/utils/CrashUtils.java
diff --git a/crasher/src/main/java/james/crasher/utils/CrashUtils.java b/crasher/src/main/java/james/crasher/utils/CrashUtils.java
new file mode 100644
index 0000000..79f1550
--- /dev/null
+++ b/crasher/src/main/java/james/crasher/utils/CrashUtils.java
@@ -0,0 +1,15 @@
+package james.crasher.utils;
+
+import android.content.Context;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class CrashUtils {
+
+ public static boolean isInstalledFromPlayStore(Context context) {
+ return new ArrayList<>(Arrays.asList("com.android.vending", "com.google.android.feedback"))
+ .contains(context.getPackageManager().getInstallerPackageName(context.getPackageName()));
+ }
+
+}
From 8f32589e2c36d2dd6689e2840cc3f77a06e01eae Mon Sep 17 00:00:00 2001
From: James Fenn <18jafenn90@gmail.com>
Date: Fri, 22 Jun 2018 11:50:29 -0400
Subject: [PATCH 04/10] added line # to report titles
---
.../james/crasher/activities/CrashActivity.java | 7 +++++--
.../main/java/james/crasher/utils/CrashUtils.java | 13 +++++++++++++
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/crasher/src/main/java/james/crasher/activities/CrashActivity.java b/crasher/src/main/java/james/crasher/activities/CrashActivity.java
index 233d85a..fbd5fa3 100644
--- a/crasher/src/main/java/james/crasher/activities/CrashActivity.java
+++ b/crasher/src/main/java/james/crasher/activities/CrashActivity.java
@@ -22,6 +22,7 @@
import james.crasher.BuildConfig;
import james.crasher.R;
import james.crasher.utils.ColorUtils;
+import james.crasher.utils.CrashUtils;
import james.crasher.utils.ImageUtils;
public class CrashActivity extends AppCompatActivity implements View.OnClickListener {
@@ -99,7 +100,10 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
getWindow().setNavigationBarColor(colorDark);
}
- String nameString = getIntent().getStringExtra(EXTRA_NAME);
+ String stack = getIntent().getStringExtra(EXTRA_STACK_TRACE);
+ String stackCause = CrashUtils.getCause(this, stack);
+
+ String nameString = getIntent().getStringExtra(EXTRA_NAME) + (stackCause != null ? " at " + stackCause : "");
String messageString = getIntent().getStringExtra(EXTRA_NAME);
name.setText(nameString);
@@ -109,7 +113,6 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
description.setText(String.format(Locale.getDefault(), getString(R.string.msg_crashed), getString(R.string.app_name)));
- String stack = getIntent().getStringExtra(EXTRA_STACK_TRACE);
stackTrace.setText(stack);
stackTraceHeader.setOnClickListener(this);
if (BuildConfig.DEBUG)
diff --git a/crasher/src/main/java/james/crasher/utils/CrashUtils.java b/crasher/src/main/java/james/crasher/utils/CrashUtils.java
index 79f1550..d8a6b9e 100644
--- a/crasher/src/main/java/james/crasher/utils/CrashUtils.java
+++ b/crasher/src/main/java/james/crasher/utils/CrashUtils.java
@@ -12,4 +12,17 @@ public static boolean isInstalledFromPlayStore(Context context) {
.contains(context.getPackageManager().getInstallerPackageName(context.getPackageName()));
}
+ public static String getCause(Context context, String stackTrace) {
+ int index = stackTrace.indexOf("at " + context.getPackageName());
+ if (index >= 0) {
+ stackTrace = stackTrace.substring(index);
+ index = stackTrace.indexOf("(");
+
+ if (index > 0)
+ return stackTrace.substring(index + 1, index + stackTrace.substring(index).indexOf(")"));
+ }
+
+ return null;
+ }
+
}
From 766ba6c620597addeccdc01ee20f7d9ffaee63a5 Mon Sep 17 00:00:00 2001
From: James Fenn <18jafenn90@gmail.com>
Date: Fri, 22 Jun 2018 11:55:20 -0400
Subject: [PATCH 05/10] better arrow animations
---
.../src/main/java/james/crasher/activities/CrashActivity.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/crasher/src/main/java/james/crasher/activities/CrashActivity.java b/crasher/src/main/java/james/crasher/activities/CrashActivity.java
index fbd5fa3..3ac6018 100644
--- a/crasher/src/main/java/james/crasher/activities/CrashActivity.java
+++ b/crasher/src/main/java/james/crasher/activities/CrashActivity.java
@@ -160,10 +160,10 @@ else if (service instanceof android.text.ClipboardManager)
} else if (v.getId() == R.id.stackTraceHeader) {
if (stackTrace.getVisibility() == View.GONE) {
stackTrace.setVisibility(View.VISIBLE);
- stackTraceArrow.animate().rotation(180).start();
+ stackTraceArrow.animate().scaleY(-1).start();
} else {
stackTrace.setVisibility(View.GONE);
- stackTraceArrow.animate().rotation(0).start();
+ stackTraceArrow.animate().scaleY(1).start();
}
}
}
From fb6a33203c175e2e81c4d998d4a73707741c6381 Mon Sep 17 00:00:00 2001
From: James Fenn <18jafenn90@gmail.com>
Date: Fri, 22 Jun 2018 12:46:31 -0400
Subject: [PATCH 06/10] fixed #2
---
.../james/crashersample/MainActivity.java | 9 +++
app/src/main/res/layout/activity_main.xml | 7 +++
.../src/main/java/james/crasher/Crasher.java | 56 +++++++++++++++---
crasher/src/main/res/drawable-hdpi/ic_bug.png | Bin 0 -> 428 bytes
crasher/src/main/res/drawable-mdpi/ic_bug.png | Bin 0 -> 301 bytes
.../src/main/res/drawable-xhdpi/ic_bug.png | Bin 0 -> 438 bytes
.../src/main/res/drawable-xxhdpi/ic_bug.png | Bin 0 -> 710 bytes
crasher/src/main/res/values/strings.xml | 3 +
8 files changed, 66 insertions(+), 9 deletions(-)
create mode 100644 crasher/src/main/res/drawable-hdpi/ic_bug.png
create mode 100644 crasher/src/main/res/drawable-mdpi/ic_bug.png
create mode 100644 crasher/src/main/res/drawable-xhdpi/ic_bug.png
create mode 100644 crasher/src/main/res/drawable-xxhdpi/ic_bug.png
diff --git a/app/src/main/java/james/crashersample/MainActivity.java b/app/src/main/java/james/crashersample/MainActivity.java
index d181efc..ca09f7c 100644
--- a/app/src/main/java/james/crashersample/MainActivity.java
+++ b/app/src/main/java/james/crashersample/MainActivity.java
@@ -21,6 +21,7 @@ public class MainActivity extends AppCompatActivity implements Crasher.OnCrashLi
private SwitchCompat stackOverflowSwitch;
private SwitchCompat crashActivitySwitch;
+ private SwitchCompat backgroundSwitch;
private AppCompatButton colorButton;
private int color;
@@ -35,6 +36,7 @@ protected void onCreate(Bundle savedInstanceState) {
stackOverflowSwitch = (SwitchCompat) findViewById(R.id.stackOverflow);
crashActivitySwitch = (SwitchCompat) findViewById(R.id.crashActivity);
+ backgroundSwitch = (SwitchCompat) findViewById(R.id.background);
colorButton = (AppCompatButton) findViewById(R.id.color);
findViewById(R.id.nullPointer).setOnClickListener(new View.OnClickListener() {
@@ -58,6 +60,13 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
}
});
+ backgroundSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
+ crasher.setBackgroundCrash(b);
+ }
+ });
+
setColor(ContextCompat.getColor(this, R.color.colorPrimary));
colorButton.setOnClickListener(new View.OnClickListener() {
@Override
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index b1f8e5f..2bfbd82 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -31,6 +31,13 @@
android:padding="8dp"
android:text="isCrashActivityEnabled" />
+
+
= Build.VERSION_CODES.O) {
+ manager.createNotificationChannel(new NotificationChannel("crashNotifications", context.getString(R.string.title_crash_notifications), NotificationManager.IMPORTANCE_DEFAULT));
+ builder = new NotificationCompat.Builder(context, "crashNotifications");
+ } else builder = new NotificationCompat.Builder(context);
+
+ manager.notify(0, builder.setContentTitle(String.format(context.getString(R.string.title_crash_notification), context.getString(R.string.app_name), e.getClass().getName(), CrashUtils.getCause(context, stack)))
+ .setContentText(context.getString(R.string.msg_crash_notification))
+ .setSmallIcon(R.drawable.ic_bug)
+ .setContentIntent(PendingIntent.getActivity(context, 0, intent, 0))
+ .setAutoCancel(true)
+ .setPriority(NotificationCompat.PRIORITY_HIGH)
+ .build());
+ }
+ } else context.startActivity(intent);
+ }
+
for (OnCrashListener listener : listeners) {
listener.onCrash(t, e);
}
diff --git a/crasher/src/main/res/drawable-hdpi/ic_bug.png b/crasher/src/main/res/drawable-hdpi/ic_bug.png
new file mode 100644
index 0000000000000000000000000000000000000000..4fe8cde7c7bf2d5e3a5b94b70275970be7952593
GIT binary patch
literal 428
zcmV;d0aN~oP)TD=VuLlTxYz9)a_Z&mmvMWSAcmy4JuG^XU64lcQ7%g!%*?-Fx(zhjC2Lp)=4|(bUs^(}4ymp89Ea
zUIOQg2XKfP=s@4&?Ua%R(nJ2m*sEmP2ioan^?IUekTg&SxWrayc*p9To#5TFdMAzf
zG!{B>L%gow9jE>4nj9Hul17LYtvQ;t(8-F`IV-`tX7yHXCiTe$s)KuCDKxxbbvn@L>;7sN>DWXkHCso)*4dij{G;o0o
zg0hi8FI1e5l%Q%rGeiqXP76)0ffR#j9z-5Md=-dap=rJY6~78)BZF5^aSu{_Qcpq<
z)stedEHs#wpczsK6%T{5k--wExa^>a18ryu0^!p{7y*8=28Wddj@fd!es9+&r
zi5L(s0OB7=2LFJHiBYrS;RRwdDCQllim3(wvcCXrhZt0400000NkvXXu0mjf#d3Cr
literal 0
HcmV?d00001
diff --git a/crasher/src/main/res/drawable-xhdpi/ic_bug.png b/crasher/src/main/res/drawable-xhdpi/ic_bug.png
new file mode 100644
index 0000000000000000000000000000000000000000..c48e03fa9576a2f24577c3ace4cae96e596523cf
GIT binary patch
literal 438
zcmV;n0ZIOeP)qBJe+P#B?f~z2O>DWh*Zb2Lr^a-k)@6fFd9Xb?;=6DXA
zKn&?kZ_LTP$ob%h5bnA6|4Gh;+ysH5D2n0|060SRD%AC;)(7)5)DAVYs2g(4%vp$x
z`4lpAV_`nUO$c1{1oaBPA!8#8^Tadi*ws@w-xFfa_di*5{jkUUsp~#CL%o4LFV4+#
zfJ@X5RtO#0DdYK!Bvl0BeB&Ye~cT9@q%fIvCA0;N9J!D;3c@%hMY#Gp41+XSVq-7UzOj`@GkA4!b@
zNxR_O()@0LoQtUCG>MwkoyS*1?DMMK3w`z|=wp?{bb$q3GQJ{9^0m~CUCw>*9$Xp!
zk(%%18Ziq>J0vG7DUDUmgy&^t3by)*5V!9>@W8?&uy4xCzFyNdpT3(OZ*D5627Z8_
z7EVq1IW3rv%(Yggpnh;-;)%?)pMofef+{1Z2fP9GCe|D#y^%BC#)d=PwVd%X*Palz
z|7nLt>JD}54t2vl;p?6AZ3{|67PK6Ipk)f8pvVPro2MWOq96(i|ERGD-Zru2FzL;l
z@isOc>TczXUkv4_!EK&`+7q-CfS{$21in`~jb8@J5k>DCn*oHB!AX%;S^s`$pOSa;ev}%_j}w
zsL>>GwM0RyNo>(&xLtyr?NXPIXGufgdk5u6?V%**pn+kq(*ZeBb2zC&(8vJzV*I?0
zccrxkk}AbqzwIhNW7=y&&YsrjN~#((*K4kSUhvJ>-@wnNq2HA;y~$k)8Xg2szz47n
szAEebnfz@qVHk#C7=~dOhN)J51D$fUnyEuJ?*IS*07*qoM6N<$f=k^|uK)l5
literal 0
HcmV?d00001
diff --git a/crasher/src/main/res/values/strings.xml b/crasher/src/main/res/values/strings.xml
index 6cef166..d9e95ae 100644
--- a/crasher/src/main/res/values/strings.xml
+++ b/crasher/src/main/res/values/strings.xml
@@ -4,8 +4,11 @@
Crasher
%1$s Crashed
%1$s in %2$s
+ %1$s crashed: %2$s at %3$s
+ Error Messages
Unfortunately, %1$s has stopped working. You can report this as a bug using the buttons below, or you can try to fix it yourself. When reporting the bug, please include as much detail as possible to help fix the issue as quickly as possible. Please note that your device info, such as the manufacturer and model number, may be included in the bug report.
+ Click to file a bug report.
Copy
Share
From 17ecc95bc199836be155d6bd92e8b7154dbb8bd7 Mon Sep 17 00:00:00 2001
From: James Fenn <18jafenn90@gmail.com>
Date: Fri, 22 Jun 2018 15:20:46 -0400
Subject: [PATCH 07/10] renamed resources
---
app/build.gradle | 2 +-
.../src/main/java/james/crasher/Crasher.java | 8 +++----
.../crasher/activities/CrashActivity.java | 12 +++++-----
.../{ic_bug.png => ic_crasher_bug.png} | Bin
.../{ic_bug.png => ic_crasher_bug.png} | Bin
.../{ic_bug.png => ic_crasher_bug.png} | Bin
.../{ic_bug.png => ic_crasher_bug.png} | Bin
...row_down.xml => ic_crasher_arrow_down.xml} | 0
.../{ic_back.xml => ic_crasher_back.xml} | 0
.../src/main/res/layout/activity_crash.xml | 12 +++++-----
crasher/src/main/res/values/strings.xml | 22 +++++++++---------
11 files changed, 28 insertions(+), 28 deletions(-)
rename crasher/src/main/res/drawable-hdpi/{ic_bug.png => ic_crasher_bug.png} (100%)
rename crasher/src/main/res/drawable-mdpi/{ic_bug.png => ic_crasher_bug.png} (100%)
rename crasher/src/main/res/drawable-xhdpi/{ic_bug.png => ic_crasher_bug.png} (100%)
rename crasher/src/main/res/drawable-xxhdpi/{ic_bug.png => ic_crasher_bug.png} (100%)
rename crasher/src/main/res/drawable/{ic_arrow_down.xml => ic_crasher_arrow_down.xml} (100%)
rename crasher/src/main/res/drawable/{ic_back.xml => ic_crasher_back.xml} (100%)
diff --git a/app/build.gradle b/app/build.gradle
index 901a4d4..b1bc292 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,7 +8,7 @@ android {
minSdkVersion 16
targetSdkVersion 27
versionCode 1
- versionName "0.0.1"
+ versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
diff --git a/crasher/src/main/java/james/crasher/Crasher.java b/crasher/src/main/java/james/crasher/Crasher.java
index 9942e43..df99be8 100644
--- a/crasher/src/main/java/james/crasher/Crasher.java
+++ b/crasher/src/main/java/james/crasher/Crasher.java
@@ -155,13 +155,13 @@ public void uncaughtException(Thread t, final Throwable e) {
NotificationCompat.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- manager.createNotificationChannel(new NotificationChannel("crashNotifications", context.getString(R.string.title_crash_notifications), NotificationManager.IMPORTANCE_DEFAULT));
+ manager.createNotificationChannel(new NotificationChannel("crashNotifications", context.getString(R.string.title_crasher_crash_notifications), NotificationManager.IMPORTANCE_DEFAULT));
builder = new NotificationCompat.Builder(context, "crashNotifications");
} else builder = new NotificationCompat.Builder(context);
- manager.notify(0, builder.setContentTitle(String.format(context.getString(R.string.title_crash_notification), context.getString(R.string.app_name), e.getClass().getName(), CrashUtils.getCause(context, stack)))
- .setContentText(context.getString(R.string.msg_crash_notification))
- .setSmallIcon(R.drawable.ic_bug)
+ manager.notify(0, builder.setContentTitle(String.format(context.getString(R.string.title_crasher_crash_notification), context.getString(R.string.app_name), e.getClass().getName(), CrashUtils.getCause(context, stack)))
+ .setContentText(context.getString(R.string.msg_crasher_crash_notification))
+ .setSmallIcon(R.drawable.ic_crasher_bug)
.setContentIntent(PendingIntent.getActivity(context, 0, intent, 0))
.setAutoCancel(true)
.setPriority(NotificationCompat.PRIORITY_HIGH)
diff --git a/crasher/src/main/java/james/crasher/activities/CrashActivity.java b/crasher/src/main/java/james/crasher/activities/CrashActivity.java
index 3ac6018..36eeaf3 100644
--- a/crasher/src/main/java/james/crasher/activities/CrashActivity.java
+++ b/crasher/src/main/java/james/crasher/activities/CrashActivity.java
@@ -91,8 +91,8 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
- actionBar.setTitle(String.format(Locale.getDefault(), getString(R.string.title_crashed), getString(R.string.app_name)));
- actionBar.setHomeAsUpIndicator(ImageUtils.getVectorDrawable(this, R.drawable.ic_back, isColorDark ? Color.WHITE : Color.BLACK));
+ actionBar.setTitle(String.format(Locale.getDefault(), getString(R.string.title_crasher_crashed), getString(R.string.app_name)));
+ actionBar.setHomeAsUpIndicator(ImageUtils.getVectorDrawable(this, R.drawable.ic_crasher_back, isColorDark ? Color.WHITE : Color.BLACK));
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
@@ -111,7 +111,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
message.setText(messageString);
else message.setVisibility(View.GONE);
- description.setText(String.format(Locale.getDefault(), getString(R.string.msg_crashed), getString(R.string.app_name)));
+ description.setText(String.format(Locale.getDefault(), getString(R.string.msg_crasher_crashed), getString(R.string.app_name)));
stackTrace.setText(stack);
stackTraceHeader.setOnClickListener(this);
@@ -147,16 +147,16 @@ else if (service instanceof android.text.ClipboardManager)
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, body);
- startActivity(Intent.createChooser(intent, getString(R.string.action_share)));
+ startActivity(Intent.createChooser(intent, getString(R.string.title_crasher_share)));
} else if (v.getId() == R.id.email) {
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setType("text/plain");
intent.setData(Uri.parse("mailto:" + getIntent().getStringExtra(EXTRA_EMAIL)));
intent.putExtra(Intent.EXTRA_EMAIL, getIntent().getStringExtra(EXTRA_EMAIL));
- intent.putExtra(Intent.EXTRA_SUBJECT, String.format(Locale.getDefault(), getString(R.string.title_email), name.getText().toString(), getString(R.string.app_name)));
+ intent.putExtra(Intent.EXTRA_SUBJECT, String.format(Locale.getDefault(), getString(R.string.title_crasher_email), name.getText().toString(), getString(R.string.app_name)));
intent.putExtra(Intent.EXTRA_TEXT, body);
- startActivity(Intent.createChooser(intent, getString(R.string.action_send_email)));
+ startActivity(Intent.createChooser(intent, getString(R.string.title_crasher_send_email)));
} else if (v.getId() == R.id.stackTraceHeader) {
if (stackTrace.getVisibility() == View.GONE) {
stackTrace.setVisibility(View.VISIBLE);
diff --git a/crasher/src/main/res/drawable-hdpi/ic_bug.png b/crasher/src/main/res/drawable-hdpi/ic_crasher_bug.png
similarity index 100%
rename from crasher/src/main/res/drawable-hdpi/ic_bug.png
rename to crasher/src/main/res/drawable-hdpi/ic_crasher_bug.png
diff --git a/crasher/src/main/res/drawable-mdpi/ic_bug.png b/crasher/src/main/res/drawable-mdpi/ic_crasher_bug.png
similarity index 100%
rename from crasher/src/main/res/drawable-mdpi/ic_bug.png
rename to crasher/src/main/res/drawable-mdpi/ic_crasher_bug.png
diff --git a/crasher/src/main/res/drawable-xhdpi/ic_bug.png b/crasher/src/main/res/drawable-xhdpi/ic_crasher_bug.png
similarity index 100%
rename from crasher/src/main/res/drawable-xhdpi/ic_bug.png
rename to crasher/src/main/res/drawable-xhdpi/ic_crasher_bug.png
diff --git a/crasher/src/main/res/drawable-xxhdpi/ic_bug.png b/crasher/src/main/res/drawable-xxhdpi/ic_crasher_bug.png
similarity index 100%
rename from crasher/src/main/res/drawable-xxhdpi/ic_bug.png
rename to crasher/src/main/res/drawable-xxhdpi/ic_crasher_bug.png
diff --git a/crasher/src/main/res/drawable/ic_arrow_down.xml b/crasher/src/main/res/drawable/ic_crasher_arrow_down.xml
similarity index 100%
rename from crasher/src/main/res/drawable/ic_arrow_down.xml
rename to crasher/src/main/res/drawable/ic_crasher_arrow_down.xml
diff --git a/crasher/src/main/res/drawable/ic_back.xml b/crasher/src/main/res/drawable/ic_crasher_back.xml
similarity index 100%
rename from crasher/src/main/res/drawable/ic_back.xml
rename to crasher/src/main/res/drawable/ic_crasher_back.xml
diff --git a/crasher/src/main/res/layout/activity_crash.xml b/crasher/src/main/res/layout/activity_crash.xml
index 6009f87..b00c9cd 100644
--- a/crasher/src/main/res/layout/activity_crash.xml
+++ b/crasher/src/main/res/layout/activity_crash.xml
@@ -63,7 +63,7 @@
android:layout_marginRight="16dp"
android:paddingBottom="8dp"
android:paddingTop="8dp"
- android:text="@string/msg_crashed"
+ android:text="@string/msg_crasher_crashed"
android:textColor="?android:textColorSecondary"
android:textSize="14sp" />
@@ -79,7 +79,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:text="@string/action_copy"
+ android:text="@string/title_crasher_copy"
app:backgroundType="outline"
app:ripplesEnabled="false" />
@@ -88,7 +88,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:text="@string/action_share"
+ android:text="@string/title_crasher_share"
app:backgroundType="outline"
app:ripplesEnabled="false" />
@@ -97,7 +97,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:text="@string/action_email"
+ android:text="@string/title_crasher_email"
app:backgroundType="outline"
app:ripplesEnabled="false" />
@@ -131,7 +131,7 @@
android:ellipsize="end"
android:maxLines="1"
android:singleLine="true"
- android:text="@string/title_stack_trace"
+ android:text="@string/title_crasher_stack_trace"
android:textColor="?android:textColorPrimary"
android:textSize="16sp" />
@@ -140,7 +140,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerInside"
- app:srcCompat="@drawable/ic_arrow_down" />
+ app:srcCompat="@drawable/ic_crasher_arrow_down" />
diff --git a/crasher/src/main/res/values/strings.xml b/crasher/src/main/res/values/strings.xml
index d9e95ae..0158b08 100644
--- a/crasher/src/main/res/values/strings.xml
+++ b/crasher/src/main/res/values/strings.xml
@@ -2,18 +2,18 @@
Crasher
- %1$s Crashed
- %1$s in %2$s
- %1$s crashed: %2$s at %3$s
- Error Messages
+ %1$s Crashed
+ %1$s in %2$s
+ %1$s crashed: %2$s at %3$s
+ Error Messages
- Unfortunately, %1$s has stopped working. You can report this as a bug using the buttons below, or you can try to fix it yourself. When reporting the bug, please include as much detail as possible to help fix the issue as quickly as possible. Please note that your device info, such as the manufacturer and model number, may be included in the bug report.
- Click to file a bug report.
+ Unfortunately, %1$s has stopped working. You can report this as a bug using the buttons below, or you can try to fix it yourself. When reporting the bug, please include as much detail as possible to help fix the issue as quickly as possible. Please note that your device info, such as the manufacturer and model number, may be included in the bug report.
+ Click to file a bug report.
- Copy
- Share
- Email
- Send Email
- Stack Trace
+ Copy
+ Share
+ Email
+ Send Email
+ Stack Trace
\ No newline at end of file
From 8619e7a47b07dd3aa25c30bb0091e840e37261e8 Mon Sep 17 00:00:00 2001
From: James Fenn <18jafenn90@gmail.com>
Date: Fri, 22 Jun 2018 15:21:02 -0400
Subject: [PATCH 08/10] updated version numbers
---
crasher/build.gradle | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/crasher/build.gradle b/crasher/build.gradle
index 8d3bffb..999e400 100644
--- a/crasher/build.gradle
+++ b/crasher/build.gradle
@@ -3,7 +3,7 @@ apply plugin: 'com.android.library'
ext {
PUBLISH_GROUP_ID = 'me.jfenn'
PUBLISH_ARTIFACT_ID = 'crasher'
- PUBLISH_VERSION = '0.0.1'
+ PUBLISH_VERSION = '0.0.2'
}
android {
@@ -13,8 +13,8 @@ android {
defaultConfig {
minSdkVersion 16
targetSdkVersion 27
- versionCode 1
- versionName "0.0.1"
+ versionCode 2
+ versionName "0.0.2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
From ec71bf50182add25e012c3a74419997bb0fbe506 Mon Sep 17 00:00:00 2001
From: James Fenn <18jafenn90@gmail.com>
Date: Fri, 22 Jun 2018 15:32:27 -0400
Subject: [PATCH 09/10] fixed bugs
---
app/src/main/java/james/crashersample/MainActivity.java | 8 ++++----
.../main/java/james/crasher/activities/CrashActivity.java | 2 +-
crasher/src/main/res/values/strings.xml | 2 +-
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/app/src/main/java/james/crashersample/MainActivity.java b/app/src/main/java/james/crashersample/MainActivity.java
index ca09f7c..3e0cae4 100644
--- a/app/src/main/java/james/crashersample/MainActivity.java
+++ b/app/src/main/java/james/crashersample/MainActivity.java
@@ -34,10 +34,10 @@ protected void onCreate(Bundle savedInstanceState) {
.addListener(this)
.setEmail("18jafenn90@gmail.com");
- stackOverflowSwitch = (SwitchCompat) findViewById(R.id.stackOverflow);
- crashActivitySwitch = (SwitchCompat) findViewById(R.id.crashActivity);
- backgroundSwitch = (SwitchCompat) findViewById(R.id.background);
- colorButton = (AppCompatButton) findViewById(R.id.color);
+ stackOverflowSwitch = findViewById(R.id.stackOverflow);
+ crashActivitySwitch = findViewById(R.id.crashActivity);
+ backgroundSwitch = findViewById(R.id.background);
+ colorButton = findViewById(R.id.color);
findViewById(R.id.nullPointer).setOnClickListener(new View.OnClickListener() {
@Override
diff --git a/crasher/src/main/java/james/crasher/activities/CrashActivity.java b/crasher/src/main/java/james/crasher/activities/CrashActivity.java
index 36eeaf3..c1d5614 100644
--- a/crasher/src/main/java/james/crasher/activities/CrashActivity.java
+++ b/crasher/src/main/java/james/crasher/activities/CrashActivity.java
@@ -153,7 +153,7 @@ else if (service instanceof android.text.ClipboardManager)
intent.setType("text/plain");
intent.setData(Uri.parse("mailto:" + getIntent().getStringExtra(EXTRA_EMAIL)));
intent.putExtra(Intent.EXTRA_EMAIL, getIntent().getStringExtra(EXTRA_EMAIL));
- intent.putExtra(Intent.EXTRA_SUBJECT, String.format(Locale.getDefault(), getString(R.string.title_crasher_email), name.getText().toString(), getString(R.string.app_name)));
+ intent.putExtra(Intent.EXTRA_SUBJECT, String.format(Locale.getDefault(), getString(R.string.title_crasher_exception), name.getText().toString(), getString(R.string.app_name)));
intent.putExtra(Intent.EXTRA_TEXT, body);
startActivity(Intent.createChooser(intent, getString(R.string.title_crasher_send_email)));
diff --git a/crasher/src/main/res/values/strings.xml b/crasher/src/main/res/values/strings.xml
index 0158b08..56a3116 100644
--- a/crasher/src/main/res/values/strings.xml
+++ b/crasher/src/main/res/values/strings.xml
@@ -3,7 +3,7 @@
Crasher
%1$s Crashed
- %1$s in %2$s
+ %1$s in %2$s
%1$s crashed: %2$s at %3$s
Error Messages
From 2951b1672a399f121be7f2f4a35ae3231dfa5956 Mon Sep 17 00:00:00 2001
From: James Fenn <18jafenn90@gmail.com>
Date: Fri, 22 Jun 2018 15:40:10 -0400
Subject: [PATCH 10/10] removed unused tests
---
.../ExampleInstrumentedTest.java | 26 -------------------
.../james/crashersample/ExampleUnitTest.java | 17 ------------
.../crasher/ExampleInstrumentedTest.java | 26 -------------------
.../java/james/crasher/ExampleUnitTest.java | 17 ------------
4 files changed, 86 deletions(-)
delete mode 100644 app/src/androidTest/java/james/crashersample/ExampleInstrumentedTest.java
delete mode 100644 app/src/test/java/james/crashersample/ExampleUnitTest.java
delete mode 100644 crasher/src/androidTest/java/james/crasher/ExampleInstrumentedTest.java
delete mode 100644 crasher/src/test/java/james/crasher/ExampleUnitTest.java
diff --git a/app/src/androidTest/java/james/crashersample/ExampleInstrumentedTest.java b/app/src/androidTest/java/james/crashersample/ExampleInstrumentedTest.java
deleted file mode 100644
index 571540f..0000000
--- a/app/src/androidTest/java/james/crashersample/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package james.crashersample;
-
-import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumentation test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() throws Exception {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getTargetContext();
-
- assertEquals("james.crashersample", appContext.getPackageName());
- }
-}
diff --git a/app/src/test/java/james/crashersample/ExampleUnitTest.java b/app/src/test/java/james/crashersample/ExampleUnitTest.java
deleted file mode 100644
index 43cd0d4..0000000
--- a/app/src/test/java/james/crashersample/ExampleUnitTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package james.crashersample;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * @see Testing documentation
- */
-public class ExampleUnitTest {
- @Test
- public void addition_isCorrect() throws Exception {
- assertEquals(4, 2 + 2);
- }
-}
\ No newline at end of file
diff --git a/crasher/src/androidTest/java/james/crasher/ExampleInstrumentedTest.java b/crasher/src/androidTest/java/james/crasher/ExampleInstrumentedTest.java
deleted file mode 100644
index 199e24e..0000000
--- a/crasher/src/androidTest/java/james/crasher/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package james.crasher;
-
-import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumentation test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() throws Exception {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getTargetContext();
-
- assertEquals("james.crasher.test", appContext.getPackageName());
- }
-}
diff --git a/crasher/src/test/java/james/crasher/ExampleUnitTest.java b/crasher/src/test/java/james/crasher/ExampleUnitTest.java
deleted file mode 100644
index 4ac46be..0000000
--- a/crasher/src/test/java/james/crasher/ExampleUnitTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package james.crasher;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * @see Testing documentation
- */
-public class ExampleUnitTest {
- @Test
- public void addition_isCorrect() throws Exception {
- assertEquals(4, 2 + 2);
- }
-}
\ No newline at end of file