From 046f09c4bdf8fe8bfe5886afefa0e440376184e7 Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Tue, 11 Mar 2025 12:55:50 +0600 Subject: [PATCH] Move firebase stuff to a standalone module (#1841) --- app/build.gradle.kts | 21 +-------- app/src/main/AndroidManifest.xml | 39 ---------------- app/src/main/java/eu/kanade/tachiyomi/App.kt | 8 ++-- .../kotlin/mihon/buildlogic/BuildConfig.kt | 17 +++++++ settings.gradle.kts | 1 + telemetry/build.gradle.kts | 26 +++++++++++ telemetry/src/firebase/AndroidManifest.xml | 45 +++++++++++++++++++ .../kotlin/mihon/telemetry/TelemetryConfig.kt | 2 +- telemetry/src/noop/AndroidManifest.xml | 2 + .../kotlin/mihon/telemetry/TelemetryConfig.kt | 5 ++- 10 files changed, 101 insertions(+), 65 deletions(-) create mode 100644 buildSrc/src/main/kotlin/mihon/buildlogic/BuildConfig.kt create mode 100644 telemetry/build.gradle.kts create mode 100644 telemetry/src/firebase/AndroidManifest.xml rename app/src/analytics-firebase/kotlin/mihon/core/firebase/FirebaseConfig.kt => telemetry/src/firebase/kotlin/mihon/telemetry/TelemetryConfig.kt (96%) create mode 100644 telemetry/src/noop/AndroidManifest.xml rename app/src/analytics-firebase-noop/kotlin/mihon/core/firebase/FirebaseConfig.kt => telemetry/src/noop/kotlin/mihon/telemetry/TelemetryConfig.kt (69%) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 2fbd2d609..9a6375a6f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,3 +1,4 @@ +import mihon.buildlogic.Config import mihon.buildlogic.getBuildTime import mihon.buildlogic.getCommitCount import mihon.buildlogic.getGitSha @@ -10,16 +11,6 @@ plugins { alias(libs.plugins.aboutLibraries) } -class ConfigClass { - val includeAnalytics: Boolean = project.hasProperty("include-analytics") - val enableUpdater: Boolean = project.hasProperty("enable-updater") - val enableCodeShrink: Boolean = !project.hasProperty("disable-code-shrink") - val includeDependencyInfo: Boolean = project.hasProperty("include-dependency-info") -} - -@Suppress("PropertyName") -val Config = ConfigClass() - if (Config.includeAnalytics) { pluginManager.apply { apply(libs.plugins.google.services.get().pluginId) @@ -94,8 +85,6 @@ android { } sourceSets { - val analyticsDir = if (Config.includeAnalytics) "analytics-firebase" else "analytics-firebase-noop" - getByName("main").kotlin.srcDirs("src/$analyticsDir/kotlin") getByName("preview").res.srcDirs("src/debug/res") getByName("benchmark").res.srcDirs("src/debug/res") } @@ -187,6 +176,7 @@ dependencies { implementation(projects.domain) implementation(projects.presentationCore) implementation(projects.presentationWidget) + implementation(projects.telemetry) // Compose implementation(compose.activity) @@ -280,13 +270,6 @@ dependencies { // Logging implementation(libs.logcat) - // Crash reports/analytics - if (Config.includeAnalytics) { - implementation(platform(libs.firebase.bom)) - implementation(libs.firebase.analytics) - implementation(libs.firebase.crashlytics) - } - // Shizuku implementation(libs.bundles.shizuku) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d7174542e..d11579ed8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,23 +33,6 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt index 6f213218b..a6bd80ef7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/App.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt @@ -52,9 +52,9 @@ import kotlinx.coroutines.flow.onEach import logcat.AndroidLogcatLogger import logcat.LogPriority import logcat.LogcatLogger -import mihon.core.firebase.FirebaseConfig import mihon.core.migration.Migrator import mihon.core.migration.migrations.migrations +import mihon.telemetry.TelemetryConfig import org.conscrypt.Conscrypt import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.preference.Preference @@ -80,7 +80,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor override fun onCreate() { super.onCreate() patchInjekt() - FirebaseConfig.init(applicationContext) + TelemetryConfig.init(applicationContext) GlobalExceptionHandler.initialize(applicationContext, CrashActivity::class.java) @@ -136,12 +136,12 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor privacyPreferences.analytics() .changes() - .onEach(FirebaseConfig::setAnalyticsEnabled) + .onEach(TelemetryConfig::setAnalyticsEnabled) .launchIn(scope) privacyPreferences.crashlytics() .changes() - .onEach(FirebaseConfig::setCrashlyticsEnabled) + .onEach(TelemetryConfig::setCrashlyticsEnabled) .launchIn(scope) basePreferences.hardwareBitmapThreshold().let { preference -> diff --git a/buildSrc/src/main/kotlin/mihon/buildlogic/BuildConfig.kt b/buildSrc/src/main/kotlin/mihon/buildlogic/BuildConfig.kt new file mode 100644 index 000000000..cb608a460 --- /dev/null +++ b/buildSrc/src/main/kotlin/mihon/buildlogic/BuildConfig.kt @@ -0,0 +1,17 @@ +package mihon.buildlogic + +import org.gradle.api.Project + +interface BuildConfig { + val includeAnalytics: Boolean + val enableUpdater: Boolean + val enableCodeShrink: Boolean + val includeDependencyInfo: Boolean +} + +val Project.Config: BuildConfig get() = object : BuildConfig { + override val includeAnalytics: Boolean = project.hasProperty("include-analytics") + override val enableUpdater: Boolean = project.hasProperty("enable-updater") + override val enableCodeShrink: Boolean = !project.hasProperty("disable-code-shrink") + override val includeDependencyInfo: Boolean = project.hasProperty("include-dependency-info") +} diff --git a/settings.gradle.kts b/settings.gradle.kts index c3fb256b4..cc5363ff5 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -54,3 +54,4 @@ include(":presentation-core") include(":presentation-widget") include(":source-api") include(":source-local") +include(":telemetry") diff --git a/telemetry/build.gradle.kts b/telemetry/build.gradle.kts new file mode 100644 index 000000000..6a1e83f7d --- /dev/null +++ b/telemetry/build.gradle.kts @@ -0,0 +1,26 @@ +import mihon.buildlogic.Config + +plugins { + id("mihon.library") + kotlin("android") +} + +android { + namespace = "mihon.telemetry" + + sourceSets { + getByName("main") { + val dir = if (Config.includeAnalytics) "firebase" else "noop" + kotlin.srcDirs("src/$dir/kotlin") + manifest.srcFile("src/$dir/AndroidManifext.xml") + } + } +} + +dependencies { + if (Config.includeAnalytics) { + implementation(platform(libs.firebase.bom)) + implementation(libs.firebase.analytics) + implementation(libs.firebase.crashlytics) + } +} diff --git a/telemetry/src/firebase/AndroidManifest.xml b/telemetry/src/firebase/AndroidManifest.xml new file mode 100644 index 000000000..9d0be9170 --- /dev/null +++ b/telemetry/src/firebase/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/analytics-firebase/kotlin/mihon/core/firebase/FirebaseConfig.kt b/telemetry/src/firebase/kotlin/mihon/telemetry/TelemetryConfig.kt similarity index 96% rename from app/src/analytics-firebase/kotlin/mihon/core/firebase/FirebaseConfig.kt rename to telemetry/src/firebase/kotlin/mihon/telemetry/TelemetryConfig.kt index c94436332..ff1d08c04 100644 --- a/app/src/analytics-firebase/kotlin/mihon/core/firebase/FirebaseConfig.kt +++ b/telemetry/src/firebase/kotlin/mihon/telemetry/TelemetryConfig.kt @@ -5,7 +5,7 @@ import com.google.firebase.FirebaseApp import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.crashlytics.FirebaseCrashlytics -object FirebaseConfig { +object TelemetryConfig { private lateinit var analytics: FirebaseAnalytics private lateinit var crashlytics: FirebaseCrashlytics diff --git a/telemetry/src/noop/AndroidManifest.xml b/telemetry/src/noop/AndroidManifest.xml new file mode 100644 index 000000000..8072ee00d --- /dev/null +++ b/telemetry/src/noop/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/analytics-firebase-noop/kotlin/mihon/core/firebase/FirebaseConfig.kt b/telemetry/src/noop/kotlin/mihon/telemetry/TelemetryConfig.kt similarity index 69% rename from app/src/analytics-firebase-noop/kotlin/mihon/core/firebase/FirebaseConfig.kt rename to telemetry/src/noop/kotlin/mihon/telemetry/TelemetryConfig.kt index 820543bd0..e238db049 100644 --- a/app/src/analytics-firebase-noop/kotlin/mihon/core/firebase/FirebaseConfig.kt +++ b/telemetry/src/noop/kotlin/mihon/telemetry/TelemetryConfig.kt @@ -1,8 +1,9 @@ -package mihon.core.firebase +package mihon.telemetry import android.content.Context -object FirebaseConfig { +@Suppress("UNUSED_PARAMETER") +object TelemetryConfig { fun init(context: Context) = Unit fun setAnalyticsEnabled(enabled: Boolean) = Unit