diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c9c83e0a5..33e59610a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -16,9 +16,10 @@ plugins { } if (gradle.startParameter.taskRequests.toString().contains("Standard")) { - pluginManager.apply(libs.plugins.google.services.get().pluginId) - // Firebase Crashlytics - apply(plugin = "com.google.firebase.crashlytics") + pluginManager.apply { + apply(libs.plugins.google.services.get().pluginId) + apply(libs.plugins.firebase.crashlytics.get().pluginId) + } } // shortcutHelper.setFilePath("./shortcuts.xml") @@ -286,7 +287,9 @@ dependencies { implementation(libs.logcat) // Crash reports/analytics - // "standardImplementation"(libs.firebase.analytics) + implementation(platform(libs.firebase.bom)) + implementation(libs.firebase.analytics) + implementation(libs.firebase.crashlytics) // Shizuku implementation(libs.bundles.shizuku) @@ -304,10 +307,6 @@ dependencies { // Text distance (EH) implementation(sylibs.simularity) - // Firebase (EH) - implementation(sylibs.firebase.analytics) - implementation(sylibs.firebase.crashlytics.ktx) - // Better logging (EH) implementation(sylibs.xlog) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index b8cf3413f..009aa60b8 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -167,6 +167,8 @@ -keepattributes SourceFile,LineNumberTable -keep class com.crashlytics.** { *; } -dontwarn com.crashlytics.** +-keep class com.google.firebase.crashlytics.** { *; } +-keep public class * extends java.lang.Exception # Optional: Keep custom exceptions. # === Humanize + Guava: https://github.com/google/guava/wiki/UsingProGuardWithGuava -dontwarn javax.lang.model.element.Modifier diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt index 1930941cb..d5cdab126 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/App.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt @@ -28,9 +28,8 @@ import com.elvishew.xlog.printer.AndroidPrinter import com.elvishew.xlog.printer.Printer import com.elvishew.xlog.printer.file.backup.NeverBackupStrategy import com.elvishew.xlog.printer.file.naming.DateFileNameGenerator -import com.google.firebase.crashlytics.ktx.crashlytics -import com.google.firebase.ktx.Firebase -import com.google.firebase.ktx.initialize +import com.google.firebase.Firebase +import com.google.firebase.crashlytics.crashlytics import eu.kanade.domain.DomainModule import eu.kanade.domain.SYDomainModule import eu.kanade.domain.base.BasePreferences @@ -102,7 +101,6 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor override fun onCreate() { super.onCreate() // KMK --> - Firebase.initialize(this) if (BuildConfig.DEBUG) Timber.plant(Timber.DebugTree()) // KMK <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/crash/GlobalExceptionHandler.kt b/app/src/main/java/eu/kanade/tachiyomi/crash/GlobalExceptionHandler.kt index 4670c1318..2f9d90a06 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/crash/GlobalExceptionHandler.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/crash/GlobalExceptionHandler.kt @@ -2,8 +2,6 @@ package eu.kanade.tachiyomi.crash import android.content.Context import android.content.Intent -import com.google.firebase.crashlytics.ktx.crashlytics -import com.google.firebase.ktx.Firebase import kotlinx.serialization.KSerializer import kotlinx.serialization.descriptors.PrimitiveKind import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor @@ -35,8 +33,11 @@ class GlobalExceptionHandler private constructor( override fun uncaughtException(thread: Thread, exception: Throwable) { try { logcat(priority = LogPriority.ERROR, throwable = exception) - Firebase.crashlytics.recordException(exception) launchActivity(applicationContext, activityToBeLaunched, exception) + // KMK --> + // Pass the exception to Crashlytics + defaultHandler.uncaughtException(thread, exception) + // KMK <-- exitProcess(0) } catch (_: Exception) { defaultHandler.uncaughtException(thread, exception) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index b85630007..67230caf6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -47,8 +47,8 @@ import cafe.adriel.voyager.navigator.Navigator import cafe.adriel.voyager.navigator.NavigatorDisposeBehavior import cafe.adriel.voyager.navigator.currentOrThrow import com.google.accompanist.systemuicontroller.rememberSystemUiController -import com.google.firebase.analytics.ktx.analytics -import com.google.firebase.ktx.Firebase +import com.google.firebase.Firebase +import com.google.firebase.analytics.analytics import eu.kanade.domain.base.BasePreferences import eu.kanade.domain.sync.SyncPreferences import eu.kanade.presentation.components.AppStateBanners diff --git a/app/src/main/java/exh/log/CrashlyticsPrinter.kt b/app/src/main/java/exh/log/CrashlyticsPrinter.kt index e813a28a4..2b481ed75 100644 --- a/app/src/main/java/exh/log/CrashlyticsPrinter.kt +++ b/app/src/main/java/exh/log/CrashlyticsPrinter.kt @@ -1,8 +1,8 @@ package exh.log import com.elvishew.xlog.printer.Printer -import com.google.firebase.crashlytics.ktx.crashlytics -import com.google.firebase.ktx.Firebase +import com.google.firebase.Firebase +import com.google.firebase.crashlytics.crashlytics import eu.kanade.tachiyomi.BuildConfig class CrashlyticsPrinter(private val logLevel: Int) : Printer { diff --git a/build.gradle.kts b/build.gradle.kts index da61cdb01..0a26d50e6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,14 +1,14 @@ buildscript { dependencies { // classpath(libs.android.shortcut.gradle) - classpath(sylibs.firebase.crashlytics.gradle) - classpath(sylibs.versionsx) + classpath(sylibs.gradleversionsx) } } plugins { alias(kotlinx.plugins.serialization) apply false alias(libs.plugins.aboutLibraries) apply false + alias(libs.plugins.firebase.crashlytics) apply false alias(libs.plugins.google.services) apply false alias(libs.plugins.moko) apply false alias(libs.plugins.sqldelight) apply false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ae0a5bcb1..c7be705b2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,6 +10,7 @@ sqlite = "2.4.0" voyager = "1.0.0" spotless = "6.25.0" ktlint-core = "1.3.1" +firebase-bom = "33.2.0" [libraries] desugar = "com.android.tools:desugar_jdk_libs:2.1.2" @@ -75,7 +76,9 @@ moko-core = { module = "dev.icerock.moko:resources", version.ref = "moko" } timber = "com.jakewharton.timber:timber:5.0.1" logcat = "com.squareup.logcat:logcat:0.1" -firebase-analytics = "com.google.firebase:firebase-analytics:22.1.0" +firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebase-bom" } +firebase-analytics = { module = "com.google.firebase:firebase-analytics" } +firebase-crashlytics = { module = "com.google.firebase:firebase-crashlytics" } aboutLibraries-compose = { module = "com.mikepenz:aboutlibraries-compose-m3", version.ref = "aboutlib_version" } @@ -107,6 +110,7 @@ google-services = { id = "com.google.gms.google-services", version = "4.4.2" } aboutLibraries = { id = "com.mikepenz.aboutlibraries.plugin", version.ref = "aboutlib_version" } sqldelight = { id = "app.cash.sqldelight", version.ref = "sqldelight" } moko = { id = "dev.icerock.mobile.multiplatform-resources", version.ref = "moko" } +firebase-crashlytics = { id = "com.google.firebase.crashlytics", version = "3.0.2" } [bundles] okhttp = ["okhttp-core", "okhttp-logging", "okhttp-brotli", "okhttp-dnsoverhttps"] diff --git a/gradle/sy.versions.toml b/gradle/sy.versions.toml index 6ac911ed7..c117e311f 100644 --- a/gradle/sy.versions.toml +++ b/gradle/sy.versions.toml @@ -1,17 +1,13 @@ [versions] [libraries] -firebase-analytics = "com.google.firebase:firebase-analytics:22.1.0" -firebase-crashlytics-ktx = "com.google.firebase:firebase-crashlytics:19.0.3" -firebase-crashlytics-gradle = "com.google.firebase:firebase-crashlytics-gradle:3.0.2" - simularity = "info.debatty:java-string-similarity:2.0.0" xlog = "com.elvishew:xlog:1.11.1" ratingbar = "me.zhanghai.android.materialratingbar:library:1.4.0" composeRatingbar = "com.github.a914-gowtham:compose-ratingbar:1.3.12" -versionsx = "com.github.ben-manes:gradle-versions-plugin:0.51.0" +gradleversionsx = "com.github.ben-manes:gradle-versions-plugin:0.51.0" sqlcipher = "net.zetetic:sqlcipher-android:4.6.1"