From 01c89b893dea00bba7028eea9421c538cd9bd15a Mon Sep 17 00:00:00 2001 From: Ilya Zhuravlev Date: Sun, 3 Jan 2021 19:17:15 -0500 Subject: [PATCH] only enable bugsnag in release-signed builds --- app/src/main/java/utils/MyApp.kt | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/utils/MyApp.kt b/app/src/main/java/utils/MyApp.kt index 39f1cc7c4..edee2a8d6 100644 --- a/app/src/main/java/utils/MyApp.kt +++ b/app/src/main/java/utils/MyApp.kt @@ -1,13 +1,17 @@ package utils import android.app.Application +import android.content.pm.PackageManager import android.os.Environment import android.preference.PreferenceManager -import constants.Constants -import java.io.File +import android.util.Base64 +import android.util.Log import com.bugsnag.android.Bugsnag import com.bugsnag.android.Configuration import com.libopenmw.openmw.BuildConfig +import constants.Constants +import java.io.File +import java.security.MessageDigest class MyApp : Application() { @@ -34,7 +38,7 @@ class MyApp : Application() { // Enable bugsnag only when API key is provided and we have user consent // Also don't enable bugsnag in debug builds - if (BugsnagApiKey.API_KEY.isNotEmpty() && !BuildConfig.DEBUG) { + if (isProductionBuild() && BugsnagApiKey.API_KEY.isNotEmpty() && !BuildConfig.DEBUG) { haveBugsnagApiKey = true val prefs = PreferenceManager.getDefaultSharedPreferences(this) @@ -47,6 +51,14 @@ class MyApp : Application() { } } + private fun isProductionBuild(): Boolean { + val sig = applicationContext.packageManager.getPackageInfo(applicationContext.packageName, PackageManager.GET_SIGNATURES).signatures[0] + val digest: MessageDigest = MessageDigest.getInstance("SHA-256") + val hashBytes: ByteArray = digest.digest(sig.toByteArray()) + val hash: String = Base64.encodeToString(hashBytes, Base64.NO_WRAP) + return hash == "cOqSYH3ucLraOQ7wyg/v8UKTGHlxP8N8JTN6UXO7rV0=" + } + companion object { var reportCrashes = false var haveBugsnagApiKey = false