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