Revert "Replace Crashlytics with ACRA"

This reverts commit 5c04dd0e8f.
This commit is contained in:
William Brawner 2020-04-19 08:51:41 -07:00
parent 5c04dd0e8f
commit 452f334dd1
6 changed files with 17 additions and 65 deletions

1
app/.gitignore vendored
View file

@ -1,4 +1,3 @@
/build
*.apk
/release
acra.properties

View file

@ -2,6 +2,7 @@ apply plugin: 'com.android.application'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'io.fabric'
apply plugin: 'jacoco'
def keystoreProperties = new Properties()
@ -16,17 +17,6 @@ try {
keystoreProperties['storePassword'] = ""
}
def acraProperties = new Properties()
try {
def acraPropertiesFile = project.file("acra.properties")
acraProperties.load(new FileInputStream(acraPropertiesFile))
} catch (FileNotFoundException ignored) {
logger.warn("Unable to load ACRA properties. Error reporting won't be available")
acraProperties['url'] = ""
acraProperties['user'] = ""
acraProperties['pass'] = ""
}
android {
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.1'
@ -52,9 +42,6 @@ android {
versionName "0.8.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
buildConfigField "boolean", "ENABLE_CUSTOM_CSS", "false"
buildConfigField "String", "ACRA_URL", "\"${acraProperties['url']}\""
buildConfigField "String", "ACRA_USER", "\"${acraProperties['user']}\""
buildConfigField "String", "ACRA_PASS", "\"${acraProperties['pass']}\""
}
signingConfigs {
release {
@ -108,6 +95,7 @@ dependencies {
implementation 'com.commonsware.cwac:anddown:0.3.0'
implementation 'com.google.firebase:firebase-core:17.2.3'
implementation 'com.android.billingclient:billing:2.1.0'
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
implementation "androidx.core:core-ktx:1.2.0"
implementation 'androidx.browser:browser:1.2.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
@ -119,14 +107,9 @@ dependencies {
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
kapt "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
implementation 'eu.crydee:syllable-counter:4.0.2'
def acraVersion = '5.2.0-rc1'
implementation "ch.acra:acra-http:$acraVersion"
implementation "ch.acra:acra-advanced-scheduler:$acraVersion"
}
apply plugin: 'com.google.gms.google-services'
repositories {
mavenCentral()
}

View file

@ -1,35 +1,27 @@
package com.wbrawner.simplemarkdown
import android.app.Application
import android.content.Context
import android.os.StrictMode
import androidx.preference.PreferenceManager
import com.wbrawner.simplemarkdown.utility.AcraErrorHandler
import com.wbrawner.simplemarkdown.utility.CrashlyticsErrorHandler
import com.wbrawner.simplemarkdown.utility.ErrorHandler
class MarkdownApplication : Application() {
val errorHandler: ErrorHandler by lazy {
AcraErrorHandler()
CrashlyticsErrorHandler()
}
override fun onCreate() {
if (BuildConfig.DEBUG) {
StrictMode.setThreadPolicy(StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
.penaltyDeath()
.build())
StrictMode.setVmPolicy(StrictMode.VmPolicy.Builder()
.detectAll()
.penaltyLog()
.penaltyDeath()
.build())
}
super.onCreate()
}
override fun attachBaseContext(base: Context?) {
super.attachBaseContext(base)
val enableErrorLogging = PreferenceManager.getDefaultSharedPreferences(this)
.getBoolean(getString(R.string.pref_key_error_reports_enabled), true)
if (enableErrorLogging) errorHandler.init(this)
}
}

View file

@ -1,56 +1,33 @@
package com.wbrawner.simplemarkdown.utility
import android.app.Application
import android.content.Context
import android.util.Log
import com.evernote.android.job.JobRequest
import com.crashlytics.android.Crashlytics
import com.wbrawner.simplemarkdown.BuildConfig
import org.acra.ACRA
import org.acra.config.CoreConfigurationBuilder
import org.acra.config.HttpSenderConfigurationBuilder
import org.acra.config.SchedulerConfigurationBuilder
import org.acra.data.StringFormat
import org.acra.sender.HttpSender
import io.fabric.sdk.android.Fabric
import java.util.concurrent.atomic.AtomicBoolean
interface ErrorHandler {
fun init(application: Application)
fun init(context: Context)
fun reportException(t: Throwable, message: String? = null)
}
class AcraErrorHandler : ErrorHandler {
class CrashlyticsErrorHandler : ErrorHandler {
private val isInitialized = AtomicBoolean(false)
override fun init(application: Application) {
if (BuildConfig.ACRA_URL.isBlank()
|| BuildConfig.ACRA_USER.isBlank()
|| BuildConfig.ACRA_PASS.isBlank()) {
return
}
override fun init(context: Context) {
if (!isInitialized.getAndSet(true)) {
val builder = CoreConfigurationBuilder(application)
.setBuildConfigClass(BuildConfig::class.java)
.setReportFormat(StringFormat.JSON)
builder.getPluginConfigurationBuilder(HttpSenderConfigurationBuilder::class.java)
.setUri(BuildConfig.ACRA_URL)
.setHttpMethod(HttpSender.Method.POST)
.setBasicAuthLogin(BuildConfig.ACRA_USER)
.setBasicAuthPassword(BuildConfig.ACRA_PASS)
.setEnabled(true)
builder.getPluginConfigurationBuilder(SchedulerConfigurationBuilder::class.java)
.setRequiresNetworkType(JobRequest.NetworkType.UNMETERED)
.setRequiresBatteryNotLow(true)
.setEnabled(true)
ACRA.init(application, builder)
Fabric.with(context, Crashlytics())
}
}
override fun reportException(t: Throwable, message: String?) {
@Suppress("ConstantConditionIf")
if (BuildConfig.DEBUG) {
Log.e("AcraErrorHandler", "Caught exception: $message", t)
Log.e("CrashlyticsErrorHandler", "Caught exception: $message", t)
return
}
if (!isInitialized.get()) return
ACRA.getErrorReporter().handleException(t)
Crashlytics.logException(t)
}
}

View file

@ -34,7 +34,7 @@
<string name="action_lock_swipe">Lock Swiping</string>
<string name="action_select">Select</string>
<string name="action_privacy">Privacy</string>
<string name="pref_key_error_reports_enabled">acra.enable</string>
<string name="error_reports_enabled">crashlytics.enable</string>
<string name="pref_title_error_reports">Enable automated error reports</string>
<string name="pref_error_reports_off">Error reports will not be sent</string>
<string name="pref_error_reports_on">Error reports will be sent</string>

View file

@ -12,6 +12,7 @@ buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:3.6.1'
classpath 'com.google.gms:google-services:4.3.3'
classpath 'io.fabric.tools:gradle:1.31.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}