From ca981219686dda5a8c93501177d0b5223dbda3ed Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sat, 18 Jul 2020 05:44:11 +0530 Subject: [PATCH 01/11] Add ACRA for Crash Reporting --- .gitignore | 3 +++ README.md | 15 ++++++++--- acra.properties.sample | 4 +++ build.gradle | 21 ++++++++++++--- fakeAcra.properties | 4 +++ .../org/amahi/anywhere/AmahiApplication.java | 27 +++++++++++++++++++ .../java/org/amahi/anywhere/server/Api.java | 4 +++ src/main/res/values/strings.xml | 2 ++ 8 files changed, 74 insertions(+), 6 deletions(-) create mode 100644 acra.properties.sample create mode 100644 fakeAcra.properties diff --git a/.gitignore b/.gitignore index 5ecda83bd..2596fef8e 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,6 @@ signing.properties amahi-release-key.keystore .DS* + +# Acra +acra.properties diff --git a/README.md b/README.md index 9a9e7001b..b7d82f9be 100644 --- a/README.md +++ b/README.md @@ -22,16 +22,25 @@ You will need JDK 1.7+ installed to work with it. Gradle, Android SDK, and proje This is something to keep **private** and you obtain it by sending a message to `support at Amahi dot org`. +2. Set ACRA information -2. Build the application using a command line or using GUI. + ``` + $ vim acra.properties + ``` + ``` + mailto.email = myemail@mydomain.com + ``` + +Enter your personal email in place of `myemail@mydomain.com` + +3. Build the application using a command line or using GUI. ``` $ ./gradlew clean assembleDebug ``` - -3. Once you have built the application, you will be needing credentials to use the application. Go to Amahi website and create your account, once the account is activated, you will see the description on how to set up the Amahi server. However, this is not strictly needed, as we have a set up of a demo server called "Welcome to Amahi" which you should see even without your own server installed. +4. Once you have built the application, you will be needing credentials to use the application. Go to Amahi website and create your account, once the account is activated, you will see the description on how to set up the Amahi server. However, this is not strictly needed, as we have a set up of a demo server called "Welcome to Amahi" which you should see even without your own server installed. ## Code Style Convention diff --git a/acra.properties.sample b/acra.properties.sample new file mode 100644 index 000000000..1cbfc975a --- /dev/null +++ b/acra.properties.sample @@ -0,0 +1,4 @@ +# Set ACRA mailing information in acra.properties. +# This is something to keep private and can be created by following steps in README.md + +mailto.email = myemail@mydomain.com diff --git a/build.gradle b/build.gradle index b7c5f9285..51ed6a451 100644 --- a/build.gradle +++ b/build.gradle @@ -52,10 +52,12 @@ android { targetSdkVersion 28 def apiFile = file("api.properties") + def acraFile = file("acra.properties") def apiProperties = new Properties() + def acraProperties = new Properties() - // NOTE-cpg: this fake api is here for the tests to pass def fakeApiFile = file("fakeApi.properties") + def fakeAcraFile = file("fakeAcra.properties") if (apiFile.exists()) { apiProperties.load(apiFile.newInputStream()) @@ -63,11 +65,18 @@ android { apiProperties.load(fakeApiFile.newInputStream()) } + if (acraFile.exists()) { + acraProperties.load(acraFile.newInputStream()) + } else { + acraProperties.load(fakeAcraFile.newInputStream()) + } + buildConfigField "String", "API_URL_AMAHI", formatStringField(apiProperties["url.amahi"]) buildConfigField "String", "API_URL_PROXY", formatStringField(apiProperties["url.proxy"]) buildConfigField "String", "API_CLIENT_ID", formatStringField(apiProperties["client.id"]) buildConfigField "String", "API_CLIENT_SECRET", formatStringField(apiProperties["client.secret"]) buildConfigField "String", "CHROMECAST_APP_ID", formatStringField(apiProperties["chromecast.app.id"]) + buildConfigField "String", "ACRA_EMAIL", formatStringField(acraProperties["mailto.email"]) testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -88,8 +97,8 @@ android { } } compileOptions { - targetCompatibility 1.8 - sourceCompatibility 1.8 + targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_1_8 } } @@ -171,6 +180,12 @@ dependencies { implementation 'android.arch.persistence.room:runtime:' + rootProject.archRoomVersion annotationProcessor 'android.arch.persistence.room:compiler:' + rootProject.archRoomVersion + def acraVersion = '5.6.1' + implementation "ch.acra:acra-mail:$acraVersion" + implementation "ch.acra:acra-dialog:$acraVersion" + implementation "ch.acra:acra-notification:$acraVersion" + implementation "ch.acra:acra-toast:$acraVersion" + // Uncomment the dependencies below to enable Chuck Interceptor for logging /* debugImplementation 'com.readystatesoftware.chuck:library:1.1.0' diff --git a/fakeAcra.properties b/fakeAcra.properties new file mode 100644 index 000000000..1cbfc975a --- /dev/null +++ b/fakeAcra.properties @@ -0,0 +1,4 @@ +# Set ACRA mailing information in acra.properties. +# This is something to keep private and can be created by following steps in README.md + +mailto.email = myemail@mydomain.com diff --git a/src/main/java/org/amahi/anywhere/AmahiApplication.java b/src/main/java/org/amahi/anywhere/AmahiApplication.java index f3446dd94..7b4b73aea 100644 --- a/src/main/java/org/amahi/anywhere/AmahiApplication.java +++ b/src/main/java/org/amahi/anywhere/AmahiApplication.java @@ -27,6 +27,7 @@ import android.os.Build; import android.os.StrictMode; import android.preference.PreferenceManager; + import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatDelegate; @@ -34,6 +35,7 @@ import org.amahi.anywhere.job.NetConnectivityJob; import org.amahi.anywhere.job.PhotosContentJob; +import org.amahi.anywhere.server.Api; import dagger.ObjectGraph; import io.fabric.sdk.android.Fabric; @@ -43,6 +45,7 @@ * Application declaration. Basically sets things up at the startup time, * such as dependency injection, logging, crash reporting and possible ANR detecting. */ + public class AmahiApplication extends Application { private ObjectGraph injector; @@ -165,4 +168,28 @@ private void createNotificationChannel() { } + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + if (isDebugging()) { + +// CoreConfigurationBuilder builder = new CoreConfigurationBuilder(this) +// .setBuildConfigClass(BuildConfig.class) +// .setReportFormat(StringFormat.JSON) +// .setAlsoReportToAndroidFramework(true) +// .setReportContent(ReportField.APP_VERSION_CODE) +// .setReportContent(ReportField.APP_VERSION_NAME) +// .setReportContent(ReportField.ANDROID_VERSION) +// .setReportContent(ReportField.PHONE_MODEL) +// .setReportContent(ReportField.CUSTOM_DATA) +// .setReportContent(ReportField.STACK_TRACE) +// .setReportContent(ReportField.LOGCAT) +// .setResReportSendSuccessToast(R.string.acra_report_toast); +// +// builder.getPluginConfigurationBuilder(MailSenderConfigurationBuilder.class) +// .setMailTo(Api.getAcraEmail()); +// +// ACRA.init(this, builder); + } + } } diff --git a/src/main/java/org/amahi/anywhere/server/Api.java b/src/main/java/org/amahi/anywhere/server/Api.java index 2ef21718d..e25b87b5f 100644 --- a/src/main/java/org/amahi/anywhere/server/Api.java +++ b/src/main/java/org/amahi/anywhere/server/Api.java @@ -43,4 +43,8 @@ public static String getClientId() { public static String getClientSecret() { return BuildConfig.API_CLIENT_SECRET; } + + public static String getAcraEmail() { + return BuildConfig.ACRA_EMAIL; + } } diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 4137e2cad..769b6ac8b 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -320,4 +320,6 @@ Go back Select the type of connection you want. You can set it as Auto detect, remote or local area network. + ACRA Log Report Sent! + From b25e64aa8087aae7c96f25cf29c0de1d2e6830af Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sat, 18 Jul 2020 05:57:13 +0530 Subject: [PATCH 02/11] Update Gradle --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 51ed6a451..dd8ac6ca5 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.4.1' + classpath 'com.android.tools.build:gradle:4.0.1' classpath 'io.fabric.tools:gradle:1.26.1' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index fe7c2b518..ea4655882 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Jun 09 01:34:57 IST 2019 +#Sat Jul 18 05:49:07 IST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip From 7b8e7b8be2d0c18a1b69abf0af5511f0c97a6b1d Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sat, 18 Jul 2020 06:02:44 +0530 Subject: [PATCH 03/11] final bits related to acra --- build.gradle | 2 +- .../org/amahi/anywhere/AmahiApplication.java | 39 +++++++++++-------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/build.gradle b/build.gradle index dd8ac6ca5..da3834785 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:4.0.1' - classpath 'io.fabric.tools:gradle:1.26.1' + classpath 'io.fabric.tools:gradle:1.28.1' } } diff --git a/src/main/java/org/amahi/anywhere/AmahiApplication.java b/src/main/java/org/amahi/anywhere/AmahiApplication.java index 7b4b73aea..cda079421 100644 --- a/src/main/java/org/amahi/anywhere/AmahiApplication.java +++ b/src/main/java/org/amahi/anywhere/AmahiApplication.java @@ -33,6 +33,11 @@ import com.crashlytics.android.Crashlytics; +import org.acra.ACRA; +import org.acra.ReportField; +import org.acra.config.CoreConfigurationBuilder; +import org.acra.config.MailSenderConfigurationBuilder; +import org.acra.data.StringFormat; import org.amahi.anywhere.job.NetConnectivityJob; import org.amahi.anywhere.job.PhotosContentJob; import org.amahi.anywhere.server.Api; @@ -173,23 +178,23 @@ protected void attachBaseContext(Context base) { super.attachBaseContext(base); if (isDebugging()) { -// CoreConfigurationBuilder builder = new CoreConfigurationBuilder(this) -// .setBuildConfigClass(BuildConfig.class) -// .setReportFormat(StringFormat.JSON) -// .setAlsoReportToAndroidFramework(true) -// .setReportContent(ReportField.APP_VERSION_CODE) -// .setReportContent(ReportField.APP_VERSION_NAME) -// .setReportContent(ReportField.ANDROID_VERSION) -// .setReportContent(ReportField.PHONE_MODEL) -// .setReportContent(ReportField.CUSTOM_DATA) -// .setReportContent(ReportField.STACK_TRACE) -// .setReportContent(ReportField.LOGCAT) -// .setResReportSendSuccessToast(R.string.acra_report_toast); -// -// builder.getPluginConfigurationBuilder(MailSenderConfigurationBuilder.class) -// .setMailTo(Api.getAcraEmail()); -// -// ACRA.init(this, builder); + CoreConfigurationBuilder builder = new CoreConfigurationBuilder(this) + .setBuildConfigClass(BuildConfig.class) + .setReportFormat(StringFormat.JSON) + .setAlsoReportToAndroidFramework(true) + .setReportContent(ReportField.APP_VERSION_CODE) + .setReportContent(ReportField.APP_VERSION_NAME) + .setReportContent(ReportField.ANDROID_VERSION) + .setReportContent(ReportField.PHONE_MODEL) + .setReportContent(ReportField.CUSTOM_DATA) + .setReportContent(ReportField.STACK_TRACE) + .setReportContent(ReportField.LOGCAT) + .setResReportSendSuccessToast(R.string.acra_report_toast); + + builder.getPluginConfigurationBuilder(MailSenderConfigurationBuilder.class) + .setMailTo(Api.getAcraEmail()); + + ACRA.init(this, builder); } } } From 5ae632c35cc8d822d54a1302debfba469f223b46 Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sat, 18 Jul 2020 06:29:17 +0530 Subject: [PATCH 04/11] Update .travis.yml --- .travis.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.travis.yml b/.travis.yml index bb4eb1c6d..d46b2214e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,10 @@ language: android before_install: - yes | sdkmanager "platforms;android-28" + - yes | sdkmanager "platforms;android-29" + - yes | sdkmanager "platforms;android-26" + - yes | sdkmanager "platforms;android-19" +" jdk: - oraclejdk8 From fc44053b41861709372563a85b877f5f441b1a02 Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sat, 18 Jul 2020 06:35:09 +0530 Subject: [PATCH 05/11] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index b7d82f9be..1dad74c1e 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,6 @@ Enter your personal email in place of `myemail@mydomain.com` ``` $ ./gradlew clean assembleDebug - ``` 4. Once you have built the application, you will be needing credentials to use the application. Go to Amahi website and create your account, once the account is activated, you will see the description on how to set up the Amahi server. However, this is not strictly needed, as we have a set up of a demo server called "Welcome to Amahi" which you should see even without your own server installed. From 7cb80b5cc640e5216f330a8d2ec775be6127b05d Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sat, 18 Jul 2020 06:36:34 +0530 Subject: [PATCH 06/11] Check Travis --- src/main/java/org/amahi/anywhere/AmahiApplication.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/amahi/anywhere/AmahiApplication.java b/src/main/java/org/amahi/anywhere/AmahiApplication.java index cda079421..ef1c7f6f2 100644 --- a/src/main/java/org/amahi/anywhere/AmahiApplication.java +++ b/src/main/java/org/amahi/anywhere/AmahiApplication.java @@ -170,7 +170,6 @@ private void createNotificationChannel() { NotificationManager notificationManager = getSystemService(NotificationManager.class); notificationManager.createNotificationChannel(uploadChannel); notificationManager.createNotificationChannel(downloadChannel); - } @Override From 242f74b7cd16d4c3c4702aea6b5d92592fd59094 Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sat, 18 Jul 2020 21:57:13 +0530 Subject: [PATCH 07/11] update travis --- .travis.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index d46b2214e..766c0267c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,10 +2,7 @@ language: android before_install: - yes | sdkmanager "platforms;android-28" - - yes | sdkmanager "platforms;android-29" - - yes | sdkmanager "platforms;android-26" - yes | sdkmanager "platforms;android-19" -" jdk: - oraclejdk8 @@ -18,7 +15,6 @@ android: - platform-tools - build-tools-28.0.3 - android-28 - - android-26 - android-19 - extra-android-support - extra-android-m2repository From 458ac8b49683c96b3503452ea868fe49a103fc80 Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sat, 18 Jul 2020 22:20:59 +0530 Subject: [PATCH 08/11] update travis --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 766c0267c..e9868de1b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,13 +1,14 @@ language: android before_install: + - yes | sdkmanager "platforms;android-29" - yes | sdkmanager "platforms;android-28" - yes | sdkmanager "platforms;android-19" + - yes | sdkmanager --licenses jdk: - oraclejdk8 -sudo: required android: components: - tools From 21249f53aa0dd15533234c718bbbadbcc6cb2224 Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Sat, 18 Jul 2020 22:24:57 +0530 Subject: [PATCH 09/11] update travis --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e9868de1b..a2d460a82 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,6 @@ before_install: - yes | sdkmanager "platforms;android-29" - yes | sdkmanager "platforms;android-28" - yes | sdkmanager "platforms;android-19" - - yes | sdkmanager --licenses jdk: - oraclejdk8 From c15c5be1500cde9414dccbd107bf4412db537e70 Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Mon, 20 Jul 2020 13:59:14 +0530 Subject: [PATCH 10/11] Email facility done --- src/main/AndroidManifest.xml | 1 + .../java/org/amahi/anywhere/AmahiApplication.java | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index fd718f4bf..d6626655c 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -33,6 +33,7 @@ + diff --git a/src/main/java/org/amahi/anywhere/AmahiApplication.java b/src/main/java/org/amahi/anywhere/AmahiApplication.java index ef1c7f6f2..41e4b3845 100644 --- a/src/main/java/org/amahi/anywhere/AmahiApplication.java +++ b/src/main/java/org/amahi/anywhere/AmahiApplication.java @@ -37,6 +37,7 @@ import org.acra.ReportField; import org.acra.config.CoreConfigurationBuilder; import org.acra.config.MailSenderConfigurationBuilder; +import org.acra.config.ToastConfigurationBuilder; import org.acra.data.StringFormat; import org.amahi.anywhere.job.NetConnectivityJob; import org.amahi.anywhere.job.PhotosContentJob; @@ -187,11 +188,15 @@ protected void attachBaseContext(Context base) { .setReportContent(ReportField.PHONE_MODEL) .setReportContent(ReportField.CUSTOM_DATA) .setReportContent(ReportField.STACK_TRACE) - .setReportContent(ReportField.LOGCAT) - .setResReportSendSuccessToast(R.string.acra_report_toast); + .setReportContent(ReportField.LOGCAT); builder.getPluginConfigurationBuilder(MailSenderConfigurationBuilder.class) - .setMailTo(Api.getAcraEmail()); + .setMailTo(Api.getAcraEmail()) + .setEnabled(true); + + builder.getPluginConfigurationBuilder(ToastConfigurationBuilder.class) + .setResText(R.string.acra_report_toast) + .setEnabled(true); ACRA.init(this, builder); } From 40305b695cf2354c0b6dd7ca41ce0f05f4471476 Mon Sep 17 00:00:00 2001 From: Chirag Jain Date: Mon, 20 Jul 2020 16:34:23 +0530 Subject: [PATCH 11/11] Add Comments --- build.gradle | 1 + fakeAcra.properties | 1 + fakeApi.properties | 2 ++ fakeSigning.properties | 2 ++ 4 files changed, 6 insertions(+) diff --git a/build.gradle b/build.gradle index da3834785..d6f726fd8 100644 --- a/build.gradle +++ b/build.gradle @@ -56,6 +56,7 @@ android { def apiProperties = new Properties() def acraProperties = new Properties() + // NOTE-cpg: this fakeApi and fakeAcra is here for the tests to pass def fakeApiFile = file("fakeApi.properties") def fakeAcraFile = file("fakeAcra.properties") diff --git a/fakeAcra.properties b/fakeAcra.properties index 1cbfc975a..eaeda3d7c 100644 --- a/fakeAcra.properties +++ b/fakeAcra.properties @@ -1,4 +1,5 @@ # Set ACRA mailing information in acra.properties. # This is something to keep private and can be created by following steps in README.md +# Purpose: This file is required for Tests and Travis checks to pass mailto.email = myemail@mydomain.com diff --git a/fakeApi.properties b/fakeApi.properties index 5d0473ebe..b0f2d2482 100644 --- a/fakeApi.properties +++ b/fakeApi.properties @@ -1,6 +1,8 @@ # Set API information in api.properties. # This is something to keep private and you obtain it by asking in the Amahi IRC channel or # send a message to support at Amahi dot org +# Purpose: This file is required for Tests and Travis checks to pass + url.amahi=https://amahi.org url.proxy=https://amahi.org client.id=1234567890 diff --git a/fakeSigning.properties b/fakeSigning.properties index 86d6879d8..5bb671b88 100644 --- a/fakeSigning.properties +++ b/fakeSigning.properties @@ -1,6 +1,8 @@ # Set API information in api.properties. # This is something to keep private and you obtain it by asking in the Amahi IRC channel or # send a message to support at Amahi dot org +# Purpose: This file is required for Tests and Travis checks to pass + keystore.file=debug.keystore keystore.password=android key.alias=androiddebugkey