diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 23e565fee..93b327696 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
@@ -11,16 +12,6 @@ plugins {
id("com.github.ben-manes.versions")
}
-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)
@@ -102,8 +93,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/beta/res")
getByName("benchmark").res.srcDirs("src/debug/res")
}
@@ -202,6 +191,7 @@ dependencies {
implementation(projects.domain)
implementation(projects.presentationCore)
implementation(projects.presentationWidget)
+ implementation(projects.telemetry)
// Compose
implementation(compose.activity)
@@ -307,13 +297,6 @@ dependencies {
implementation(libs.timber)
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 0b3e1577a..b722e3071 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -43,23 +43,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
.onCreate()
patchInjekt()
- FirebaseConfig.init(applicationContext)
+ TelemetryConfig.init(applicationContext)
// KMK -->
if (isDebugBuildType) Timber.plant(Timber.DebugTree())
@@ -181,12 +181,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 100d02c60..4d2f78b75 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -60,3 +60,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..1382b9324
--- /dev/null
+++ b/telemetry/build.gradle.kts
@@ -0,0 +1,29 @@
+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)
+ }
+
+ // Better logging (EH)
+ implementation(sylibs.xlog)
+}
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/exh/log/CrashlyticsPrinter.kt b/telemetry/src/firebase/kotlin/exh/log/CrashlyticsPrinter.kt
similarity index 100%
rename from app/src/analytics-firebase/kotlin/exh/log/CrashlyticsPrinter.kt
rename to telemetry/src/firebase/kotlin/exh/log/CrashlyticsPrinter.kt
diff --git a/app/src/analytics-firebase/kotlin/mihon/core/firebase/FirebaseConfig.kt b/telemetry/src/firebase/kotlin/mihon/telemetry/TelemetryConfig.kt
similarity index 95%
rename from app/src/analytics-firebase/kotlin/mihon/core/firebase/FirebaseConfig.kt
rename to telemetry/src/firebase/kotlin/mihon/telemetry/TelemetryConfig.kt
index 99f93c4ce..99df12b8a 100644
--- a/app/src/analytics-firebase/kotlin/mihon/core/firebase/FirebaseConfig.kt
+++ b/telemetry/src/firebase/kotlin/mihon/telemetry/TelemetryConfig.kt
@@ -1,4 +1,4 @@
-package mihon.core.firebase
+package mihon.telemetry
import android.content.Context
import com.google.firebase.FirebaseApp
@@ -7,7 +7,7 @@ import com.google.firebase.crashlytics.FirebaseCrashlytics
import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
-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/exh/log/CrashlyticsPrinter.kt b/telemetry/src/noop/kotlin/exh/log/CrashlyticsPrinter.kt
similarity index 100%
rename from app/src/analytics-firebase-noop/kotlin/exh/log/CrashlyticsPrinter.kt
rename to telemetry/src/noop/kotlin/exh/log/CrashlyticsPrinter.kt
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