Skip to content

Commit ffd5b4e

Browse files
Fix crashlytics while using custom global exception handler (#338)
* Add crashlytics to standard builds (cherry picked from commit 3c611b9) * Testing crashlytics * working * cleanup * Revert "Auxiliary commit to revert individual files from 84232c7" This reverts commit 2c9b6277b276f108a25e90e6be9a227440136063. * Revert "Auxiliary commit to revert individual files from cf3f5fe" This reverts commit 708f6b1d3803374b0440d163560a682f0cfc618e. * Only send crashlytics on Standard & Release/Preview build --------- Co-authored-by: AntsyLich <[email protected]>
1 parent 6d4a7f0 commit ffd5b4e

File tree

9 files changed

+27
-27
lines changed

9 files changed

+27
-27
lines changed

app/build.gradle.kts

+7-8
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ plugins {
1616
}
1717

1818
if (gradle.startParameter.taskRequests.toString().contains("Standard")) {
19-
pluginManager.apply(libs.plugins.google.services.get().pluginId)
20-
// Firebase Crashlytics
21-
apply(plugin = "com.google.firebase.crashlytics")
19+
pluginManager.apply {
20+
apply(libs.plugins.google.services.get().pluginId)
21+
apply(libs.plugins.firebase.crashlytics.get().pluginId)
22+
}
2223
}
2324

2425
// shortcutHelper.setFilePath("./shortcuts.xml")
@@ -286,7 +287,9 @@ dependencies {
286287
implementation(libs.logcat)
287288

288289
// Crash reports/analytics
289-
// "standardImplementation"(libs.firebase.analytics)
290+
implementation(platform(libs.firebase.bom))
291+
implementation(libs.firebase.analytics)
292+
implementation(libs.firebase.crashlytics)
290293

291294
// Shizuku
292295
implementation(libs.bundles.shizuku)
@@ -304,10 +307,6 @@ dependencies {
304307
// Text distance (EH)
305308
implementation(sylibs.simularity)
306309

307-
// Firebase (EH)
308-
implementation(sylibs.firebase.analytics)
309-
implementation(sylibs.firebase.crashlytics.ktx)
310-
311310
// Better logging (EH)
312311
implementation(sylibs.xlog)
313312

app/proguard-rules.pro

+2
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@
167167
-keepattributes SourceFile,LineNumberTable
168168
-keep class com.crashlytics.** { *; }
169169
-dontwarn com.crashlytics.**
170+
-keep class com.google.firebase.crashlytics.** { *; }
171+
-keep public class * extends java.lang.Exception # Optional: Keep custom exceptions.
170172

171173
# === Humanize + Guava: https://github.com/google/guava/wiki/UsingProGuardWithGuava
172174
-dontwarn javax.lang.model.element.Modifier

app/src/main/java/eu/kanade/tachiyomi/App.kt

+2-4
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@ import com.elvishew.xlog.printer.AndroidPrinter
2828
import com.elvishew.xlog.printer.Printer
2929
import com.elvishew.xlog.printer.file.backup.NeverBackupStrategy
3030
import com.elvishew.xlog.printer.file.naming.DateFileNameGenerator
31-
import com.google.firebase.crashlytics.ktx.crashlytics
32-
import com.google.firebase.ktx.Firebase
33-
import com.google.firebase.ktx.initialize
31+
import com.google.firebase.Firebase
32+
import com.google.firebase.crashlytics.crashlytics
3433
import eu.kanade.domain.DomainModule
3534
import eu.kanade.domain.SYDomainModule
3635
import eu.kanade.domain.base.BasePreferences
@@ -102,7 +101,6 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor
102101
override fun onCreate() {
103102
super<Application>.onCreate()
104103
// KMK -->
105-
Firebase.initialize(this)
106104
if (BuildConfig.DEBUG) Timber.plant(Timber.DebugTree())
107105
// KMK <--
108106

app/src/main/java/eu/kanade/tachiyomi/crash/GlobalExceptionHandler.kt

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ package eu.kanade.tachiyomi.crash
22

33
import android.content.Context
44
import android.content.Intent
5-
import com.google.firebase.crashlytics.ktx.crashlytics
6-
import com.google.firebase.ktx.Firebase
75
import kotlinx.serialization.KSerializer
86
import kotlinx.serialization.descriptors.PrimitiveKind
97
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
@@ -35,8 +33,11 @@ class GlobalExceptionHandler private constructor(
3533
override fun uncaughtException(thread: Thread, exception: Throwable) {
3634
try {
3735
logcat(priority = LogPriority.ERROR, throwable = exception)
38-
Firebase.crashlytics.recordException(exception)
3936
launchActivity(applicationContext, activityToBeLaunched, exception)
37+
// KMK -->
38+
// Pass the exception to Crashlytics
39+
defaultHandler.uncaughtException(thread, exception)
40+
// KMK <--
4041
exitProcess(0)
4142
} catch (_: Exception) {
4243
defaultHandler.uncaughtException(thread, exception)

app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ import cafe.adriel.voyager.navigator.Navigator
4747
import cafe.adriel.voyager.navigator.NavigatorDisposeBehavior
4848
import cafe.adriel.voyager.navigator.currentOrThrow
4949
import com.google.accompanist.systemuicontroller.rememberSystemUiController
50-
import com.google.firebase.analytics.ktx.analytics
51-
import com.google.firebase.ktx.Firebase
50+
import com.google.firebase.Firebase
51+
import com.google.firebase.analytics.analytics
5252
import eu.kanade.domain.base.BasePreferences
5353
import eu.kanade.domain.sync.SyncPreferences
5454
import eu.kanade.presentation.components.AppStateBanners

app/src/main/java/exh/log/CrashlyticsPrinter.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package exh.log
22

33
import com.elvishew.xlog.printer.Printer
4-
import com.google.firebase.crashlytics.ktx.crashlytics
5-
import com.google.firebase.ktx.Firebase
4+
import com.google.firebase.Firebase
5+
import com.google.firebase.crashlytics.crashlytics
66
import eu.kanade.tachiyomi.BuildConfig
77

88
class CrashlyticsPrinter(private val logLevel: Int) : Printer {

build.gradle.kts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
buildscript {
22
dependencies {
33
// classpath(libs.android.shortcut.gradle)
4-
classpath(sylibs.firebase.crashlytics.gradle)
5-
classpath(sylibs.versionsx)
4+
classpath(sylibs.gradleversionsx)
65
}
76
}
87

98
plugins {
109
alias(kotlinx.plugins.serialization) apply false
1110
alias(libs.plugins.aboutLibraries) apply false
11+
alias(libs.plugins.firebase.crashlytics) apply false
1212
alias(libs.plugins.google.services) apply false
1313
alias(libs.plugins.moko) apply false
1414
alias(libs.plugins.sqldelight) apply false

gradle/libs.versions.toml

+5-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ sqlite = "2.4.0"
1010
voyager = "1.0.0"
1111
spotless = "6.25.0"
1212
ktlint-core = "1.3.1"
13+
firebase-bom = "33.2.0"
1314

1415
[libraries]
1516
desugar = "com.android.tools:desugar_jdk_libs:2.1.2"
@@ -75,7 +76,9 @@ moko-core = { module = "dev.icerock.moko:resources", version.ref = "moko" }
7576
timber = "com.jakewharton.timber:timber:5.0.1"
7677
logcat = "com.squareup.logcat:logcat:0.1"
7778

78-
firebase-analytics = "com.google.firebase:firebase-analytics:22.1.0"
79+
firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebase-bom" }
80+
firebase-analytics = { module = "com.google.firebase:firebase-analytics" }
81+
firebase-crashlytics = { module = "com.google.firebase:firebase-crashlytics" }
7982

8083
aboutLibraries-compose = { module = "com.mikepenz:aboutlibraries-compose-m3", version.ref = "aboutlib_version" }
8184

@@ -107,6 +110,7 @@ google-services = { id = "com.google.gms.google-services", version = "4.4.2" }
107110
aboutLibraries = { id = "com.mikepenz.aboutlibraries.plugin", version.ref = "aboutlib_version" }
108111
sqldelight = { id = "app.cash.sqldelight", version.ref = "sqldelight" }
109112
moko = { id = "dev.icerock.mobile.multiplatform-resources", version.ref = "moko" }
113+
firebase-crashlytics = { id = "com.google.firebase.crashlytics", version = "3.0.2" }
110114

111115
[bundles]
112116
okhttp = ["okhttp-core", "okhttp-logging", "okhttp-brotli", "okhttp-dnsoverhttps"]

gradle/sy.versions.toml

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
[versions]
22

33
[libraries]
4-
firebase-analytics = "com.google.firebase:firebase-analytics:22.1.0"
5-
firebase-crashlytics-ktx = "com.google.firebase:firebase-crashlytics:19.0.3"
6-
firebase-crashlytics-gradle = "com.google.firebase:firebase-crashlytics-gradle:3.0.2"
7-
84
simularity = "info.debatty:java-string-similarity:2.0.0"
95
xlog = "com.elvishew:xlog:1.11.1"
106

117
ratingbar = "me.zhanghai.android.materialratingbar:library:1.4.0"
128
composeRatingbar = "com.github.a914-gowtham:compose-ratingbar:1.3.12"
139

14-
versionsx = "com.github.ben-manes:gradle-versions-plugin:0.51.0"
10+
gradleversionsx = "com.github.ben-manes:gradle-versions-plugin:0.51.0"
1511

1612
sqlcipher = "net.zetetic:sqlcipher-android:4.6.1"
1713

0 commit comments

Comments
 (0)