소스 검색

Added acra crash reporting

Vadik Sirekanyan 5 년 전
부모
커밋
ff1aef9a72

+ 3 - 0
app/build.gradle.kts

@@ -71,6 +71,9 @@ dependencies {
     // etc
     implementation("com.google.android.material:material:1.1.0")
     implementation("com.github.bumptech.glide:glide:4.11.0")
+
+    // crash reporting
+    implementation("ch.acra:acra-http:5.1.3")
 }
 
 task("updateReadme") {

+ 20 - 0
app/src/main/java/com/sirekanyan/knigopis/App.kt

@@ -1,7 +1,12 @@
 package com.sirekanyan.knigopis
 
 import android.app.Application
+import android.content.Context
 import com.sirekanyan.knigopis.dependency.*
+import org.acra.ACRA
+import org.acra.config.CoreConfigurationBuilder
+import org.acra.config.HttpSenderConfigurationBuilder
+import org.acra.sender.HttpSender
 
 class App : Application() {
 
@@ -17,6 +22,21 @@ class App : Application() {
     val cache by lazy(::provideCache)
     val gson by lazy(::provideGson)
 
+    override fun attachBaseContext(base: Context?) {
+        super.attachBaseContext(base)
+        initCrashReporting()
+    }
+
+    private fun initCrashReporting() {
+        val builder = CoreConfigurationBuilder(this)
+            .setBuildConfigClass(BuildConfig::class.java)
+        builder.getPluginConfigurationBuilder(HttpSenderConfigurationBuilder::class.java)
+            .setUri("https://collector.tracepot.com/93c9aa62")
+            .setHttpMethod(HttpSender.Method.POST)
+            .setEnabled(true)
+        ACRA.init(this, builder)
+    }
+
     override fun onCreate() {
         super.onCreate()
         config.theme.setup()

+ 5 - 1
app/src/main/java/com/sirekanyan/knigopis/common/functions/LogFactory.kt

@@ -1,10 +1,14 @@
 package com.sirekanyan.knigopis.common.functions
 
 import android.util.Log
+import org.acra.ACRA
 
 private const val TAG = "Knigopis"
 
 @Suppress("unused")
 fun logWarn(message: String) = Log.w(TAG, message)
 
-fun logError(message: String, throwable: Throwable?) = Log.e(TAG, message, throwable)
+fun logError(message: String, throwable: Throwable?): Int {
+    ACRA.getErrorReporter().handleException(throwable)
+    return Log.e(TAG, message, throwable)
+}