Browse Source

Removed crash reporter from fdroid flavor

Vadik Sirekanyan 2 years ago
parent
commit
6d51d3ae4d

+ 14 - 10
.github/workflows/build.yml

@@ -11,11 +11,13 @@ jobs:
           distribution: 'temurin'
           java-version: '17'
       - shell: bash
-        run: ./gradlew lintDebug
+        run: ./gradlew lintFdroidDebug
+      - shell: bash
+        run: ./gradlew lintPlayDebug
       - if: ${{ always() }}
         uses: actions/upload-artifact@v3
         with:
-          path: app/build/reports/lint-results-debug.html
+          path: app/build/reports/lint-results-*.html
   assemble:
     runs-on: ubuntu-latest
     steps:
@@ -31,19 +33,18 @@ jobs:
           SIGNING_KEYSTORE_PASSWORD: ${{ secrets.SIGNING_KEYSTORE_PASSWORD }}
           SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
           SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
+          ACRA_URI: ${{ secrets.ACRA_URI }}
+          ACRA_LOGIN: ${{ secrets.ACRA_LOGIN }}
+          ACRA_PASSWORD: ${{ secrets.ACRA_PASSWORD }}
         run: |
           base64 --decode <<< "$SIGNING_KEYSTORE_BASE64" > app/release.keystore
-          mkdir -p release-files
-          ./gradlew assembleFdroidRelease bundleFdroidRelease
-          mv app/build/outputs/*/release/*release* release-files
-          ./gradlew assemblePlayRelease bundlePlayRelease
-          mv app/build/outputs/*/release/*release* release-files
+          ./gradlew assembleRelease bundleRelease
       - if: startsWith(github.ref, 'refs/tags/v')
         uses: softprops/action-gh-release@v1
         with:
           files: |
-            release-files/*release*.apk
-            release-files/*release*.aab
+            app/build/outputs/apk/*/*/*release*.apk
+            app/build/outputs/bundle/*/*release*.aab
   tests:
     runs-on: macos-latest
     steps:
@@ -57,7 +58,10 @@ jobs:
       - shell: bash
         env:
           TEST_TOKEN: ${{ secrets.KNIGOPIS_TEST_TOKEN }}
-        run: ./gradlew connectedAndroidTest
+          ACRA_URI: ${{ secrets.ACRA_URI }}
+          ACRA_LOGIN: ${{ secrets.ACRA_LOGIN }}
+          ACRA_PASSWORD: ${{ secrets.ACRA_PASSWORD }}
+        run: ./gradlew connectedPlayAndroidTest
       - if: ${{ always() }}
         uses: actions/upload-artifact@v3
         with:

+ 1 - 1
app/build.gradle.kts

@@ -104,7 +104,7 @@ dependencies {
     implementation("com.github.bumptech.glide:glide:4.16.0")
 
     // crash reporting
-    implementation("ch.acra:acra-http:5.11.1")
+    add("playImplementation", "ch.acra:acra-http:5.11.1")
 
     // tests
     androidTestImplementation("androidx.test.ext:junit:1.1.5")

+ 14 - 0
app/src/fdroid/kotlin/org/sirekanyan/knigopis/CrashReporter.kt

@@ -0,0 +1,14 @@
+package org.sirekanyan.knigopis
+
+@Suppress("UNUSED_PARAMETER")
+object CrashReporter {
+
+    fun init(app: App) {
+        // no-op
+    }
+
+    fun handleException(throwable: Throwable) {
+        // no-op
+    }
+
+}

+ 5 - 22
app/src/main/java/org/sirekanyan/knigopis/App.kt

@@ -2,12 +2,12 @@ package org.sirekanyan.knigopis
 
 import android.app.Application
 import android.content.Context
-import org.acra.ACRA
-import org.acra.config.CoreConfigurationBuilder
-import org.acra.config.HttpSenderConfigurationBuilder
-import org.acra.sender.HttpSender
 import org.sirekanyan.knigopis.dependency.*
 
+@Suppress("KotlinConstantConditions")
+fun isPlayFlavor(): Boolean =
+    BuildConfig.FLAVOR == "play"
+
 class App : Application() {
 
     val config by lazy(::provideConfig)
@@ -24,24 +24,7 @@ class App : Application() {
 
     override fun attachBaseContext(base: Context?) {
         super.attachBaseContext(base)
-        if (config.crashReportEnabled) {
-            initCrashReporting()
-        }
-    }
-
-    private fun initCrashReporting() {
-        val httpSenderConfig = HttpSenderConfigurationBuilder()
-            .withUri(BuildConfig.ACRA_URI)
-            .withHttpMethod(HttpSender.Method.POST)
-            .withBasicAuthLogin(BuildConfig.ACRA_LOGIN)
-            .withBasicAuthPassword(BuildConfig.ACRA_PASSWORD)
-            .withEnabled(BuildConfig.ACRA_ENABLED)
-            .build()
-        val config = CoreConfigurationBuilder()
-            .withBuildConfigClass(BuildConfig::class.java)
-            .withPluginConfigurations(httpSenderConfig)
-            .build()
-        ACRA.init(this, config)
+        CrashReporter.init(this)
     }
 
     override fun onCreate() {

+ 2 - 2
app/src/main/java/org/sirekanyan/knigopis/common/functions/LogFactory.kt

@@ -1,7 +1,7 @@
 package org.sirekanyan.knigopis.common.functions
 
 import android.util.Log
-import org.acra.ACRA
+import org.sirekanyan.knigopis.CrashReporter
 
 private const val TAG = "Knigopis"
 
@@ -9,6 +9,6 @@ private const val TAG = "Knigopis"
 fun logWarn(message: String) = Log.w(TAG, message)
 
 fun logError(message: String, throwable: Throwable?): Int {
-    ACRA.errorReporter.handleException(throwable ?: Exception(message))
+    CrashReporter.handleException(throwable ?: Exception(message))
     return Log.e(TAG, message, throwable)
 }

+ 2 - 1
app/src/main/java/org/sirekanyan/knigopis/feature/MainView.kt

@@ -17,6 +17,7 @@ import org.sirekanyan.knigopis.common.extensions.hide
 import org.sirekanyan.knigopis.common.extensions.isNightMode
 import org.sirekanyan.knigopis.common.extensions.show
 import org.sirekanyan.knigopis.databinding.ActivityMainBinding
+import org.sirekanyan.knigopis.isPlayFlavor
 import org.sirekanyan.knigopis.model.CurrentTab
 import org.sirekanyan.knigopis.model.CurrentTab.*
 import org.sirekanyan.knigopis.repository.BookSorting
@@ -148,7 +149,7 @@ class MainViewImpl(
         notesPage.show(tab == NOTES_TAB)
         toolbar.menu.findItem(R.id.option_sort_books).isVisible = tab == BOOKS_TAB
         toolbar.menu.findItem(R.id.option_sort_users).isVisible = tab == USERS_TAB
-        toolbar.menu.findItem(R.id.option_crash_report).isVisible = BuildConfig.ACRA_ENABLED
+        toolbar.menu.findItem(R.id.option_crash_report).isVisible = isPlayFlavor()
     }
 
     override fun showNavigation(isVisible: Boolean) {

+ 29 - 0
app/src/play/kotlin/org/sirekanyan/knigopis/CrashReporter.kt

@@ -0,0 +1,29 @@
+package org.sirekanyan.knigopis
+
+import org.acra.ACRA
+import org.acra.config.CoreConfigurationBuilder
+import org.acra.config.HttpSenderConfigurationBuilder
+import org.acra.sender.HttpSender
+
+object CrashReporter {
+
+    fun init(app: App) {
+        val httpSenderConfig = HttpSenderConfigurationBuilder()
+            .withUri(BuildConfig.ACRA_URI)
+            .withHttpMethod(HttpSender.Method.POST)
+            .withBasicAuthLogin(BuildConfig.ACRA_LOGIN)
+            .withBasicAuthPassword(BuildConfig.ACRA_PASSWORD)
+            .withEnabled(app.config.crashReportEnabled)
+            .build()
+        val config = CoreConfigurationBuilder()
+            .withBuildConfigClass(BuildConfig::class.java)
+            .withPluginConfigurations(httpSenderConfig)
+            .build()
+        ACRA.init(app, config)
+    }
+
+    fun handleException(throwable: Throwable) {
+        ACRA.errorReporter.handleException(throwable)
+    }
+
+}