From 0893609ad2c4791dc404d72a5e69a2e0373517ae Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Sat, 8 Mar 2025 03:10:56 +0600 Subject: [PATCH] Change foss variant application id suffix to '.foss' and more (#1831) - Remove `BuildConfig.PREVIEW` - Rename `BuildConfig.INCLUDE_ANALYTICS` -> `BuildConfig.ANALYTICS_INCLUDED` - Rename `BuildConfig.INCLUDE_UPDATER` -> `BuildConfig.UPDATER_ENABLED` - Rename build property `with-analytics` -> `include-analytics` - Rename build property `with-updater` -> `enable-updater` - Add build property to disable code shrink - Add build property to include dependency info in apk/app bundle --- .github/workflows/build_push.yml | 2 +- app/build.gradle.kts | 42 +++++++++++-------- .../more/settings/screen/about/AboutScreen.kt | 6 ++- .../data/updater/AppUpdateChecker.kt | 7 ++-- .../kanade/tachiyomi/ui/main/MainActivity.kt | 3 +- .../tachiyomi/util/system/BuildConfig.kt | 5 ++- 6 files changed, 40 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build_push.yml b/.github/workflows/build_push.yml index 03dc7ca5c..fa1dd2f66 100644 --- a/.github/workflows/build_push.yml +++ b/.github/workflows/build_push.yml @@ -32,7 +32,7 @@ jobs: run: ./gradlew spotlessCheck - name: Build app - run: ./gradlew assembleRelease -Pwith-analytics -Pwith-updater + run: ./gradlew assembleRelease -Pinclude-analytics -Penable-updater - name: Run unit tests run: ./gradlew testReleaseUnitTest diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 556d43775..2fbd2d609 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -10,10 +10,17 @@ plugins { alias(libs.plugins.aboutLibraries) } -val includeAnalytics = project.hasProperty("with-analytics") -val includeUpdater = project.hasProperty("with-updater") +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") +} -if (includeAnalytics) { +@Suppress("PropertyName") +val Config = ConfigClass() + +if (Config.includeAnalytics) { pluginManager.apply { apply(libs.plugins.google.services.get().pluginId) apply(libs.plugins.firebase.crashlytics.get().pluginId) @@ -34,9 +41,8 @@ android { buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"") buildConfigField("String", "COMMIT_SHA", "\"${getGitSha()}\"") buildConfigField("String", "BUILD_TIME", "\"${getBuildTime()}\"") - buildConfigField("boolean", "INCLUDE_ANALYTICS", "$includeAnalytics") - buildConfigField("boolean", "INCLUDE_UPDATER", "$includeUpdater") - buildConfigField("boolean", "PREVIEW", "false") + buildConfigField("boolean", "ANALYTICS_INCLUDED", "${Config.includeAnalytics}") + buildConfigField("boolean", "UPDATER_ENABLED", "${Config.enableUpdater}") testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -48,17 +54,20 @@ android { isPseudoLocalesEnabled = true } val release by getting { - isMinifyEnabled = true - isShrinkResources = true + isMinifyEnabled = Config.enableCodeShrink + isShrinkResources = Config.enableCodeShrink proguardFiles("proguard-android-optimize.txt", "proguard-rules.pro") } + + val commonMatchingFallbacks = listOf(release.name) + create("foss") { initWith(release) - applicationIdSuffix = ".t-foss" + applicationIdSuffix = ".foss" - matchingFallbacks.add(release.name) + matchingFallbacks.addAll(commonMatchingFallbacks) } create("preview") { initWith(release) @@ -68,9 +77,7 @@ android { versionNameSuffix = debug.versionNameSuffix signingConfig = debug.signingConfig - matchingFallbacks.add(release.name) - - buildConfigField("boolean", "PREVIEW", "true") + matchingFallbacks.addAll(commonMatchingFallbacks) } create("benchmark") { initWith(release) @@ -82,12 +89,12 @@ android { signingConfig = debug.signingConfig - matchingFallbacks.add(release.name) + matchingFallbacks.addAll(commonMatchingFallbacks) } } sourceSets { - val analyticsDir = if (includeAnalytics) "analytics-firebase" else "analytics-firebase-noop" + 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") @@ -131,7 +138,8 @@ android { } dependenciesInfo { - includeInApk = false + includeInApk = Config.includeDependencyInfo + includeInBundle = Config.includeDependencyInfo } buildFeatures { @@ -273,7 +281,7 @@ dependencies { implementation(libs.logcat) // Crash reports/analytics - if (includeAnalytics) { + if (Config.includeAnalytics) { implementation(platform(libs.firebase.bom)) implementation(libs.firebase.analytics) implementation(libs.firebase.crashlytics) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt index e91a0576c..abf3cdd73 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt @@ -35,7 +35,9 @@ import eu.kanade.tachiyomi.ui.more.NewUpdateScreen import eu.kanade.tachiyomi.util.CrashLogUtil import eu.kanade.tachiyomi.util.lang.toDateTimestampString import eu.kanade.tachiyomi.util.system.copyToClipboard +import eu.kanade.tachiyomi.util.system.isPreviewBuildType import eu.kanade.tachiyomi.util.system.toast +import eu.kanade.tachiyomi.util.system.updaterEnabled import kotlinx.coroutines.launch import logcat.LogPriority import tachiyomi.core.common.util.lang.withIOContext @@ -97,7 +99,7 @@ object AboutScreen : Screen() { ) } - if (BuildConfig.INCLUDE_UPDATER) { + if (updaterEnabled) { item { TextPreferenceWidget( title = stringResource(MR.strings.check_for_updates), @@ -245,7 +247,7 @@ object AboutScreen : Screen() { } } } - BuildConfig.PREVIEW -> { + isPreviewBuildType -> { "Beta r${BuildConfig.COMMIT_COUNT}".let { if (withBuildDate) { "$it (${BuildConfig.COMMIT_SHA}, ${getFormattedBuildTime()})" diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt index cc94a9ef7..d9ce3b896 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt @@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.data.updater import android.content.Context import eu.kanade.tachiyomi.BuildConfig +import eu.kanade.tachiyomi.util.system.isPreviewBuildType import tachiyomi.core.common.util.lang.withIOContext import tachiyomi.domain.release.interactor.GetApplicationRelease import uy.kohesive.injekt.injectLazy @@ -19,7 +20,7 @@ class AppUpdateChecker { return withIOContext { val result = getApplicationRelease.await( GetApplicationRelease.Arguments( - BuildConfig.PREVIEW, + isPreviewBuildType, BuildConfig.COMMIT_COUNT.toInt(), BuildConfig.VERSION_NAME, GITHUB_REPO, @@ -38,7 +39,7 @@ class AppUpdateChecker { } val GITHUB_REPO: String by lazy { - if (BuildConfig.PREVIEW) { + if (isPreviewBuildType) { "mihonapp/mihon-preview" } else { "mihonapp/mihon" @@ -46,7 +47,7 @@ val GITHUB_REPO: String by lazy { } val RELEASE_TAG: String by lazy { - if (BuildConfig.PREVIEW) { + if (isPreviewBuildType) { "r${BuildConfig.COMMIT_COUNT}" } else { "v${BuildConfig.VERSION_NAME}" 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 f94a96e5d..74e455a50 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 @@ -81,6 +81,7 @@ import eu.kanade.tachiyomi.ui.more.OnboardingScreen import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.isNavigationBarNeedsScrim import eu.kanade.tachiyomi.util.system.openInBrowser +import eu.kanade.tachiyomi.util.system.updaterEnabled import eu.kanade.tachiyomi.util.view.setComposeContent import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.callbackFlow @@ -303,7 +304,7 @@ class MainActivity : BaseActivity() { // App updates LaunchedEffect(Unit) { - if (BuildConfig.INCLUDE_UPDATER) { + if (updaterEnabled) { try { val result = AppUpdateChecker().checkForUpdate(context) if (result is GetApplicationRelease.Result.NewUpdate) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/BuildConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/BuildConfig.kt index d8a3dc78b..0470bc464 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/BuildConfig.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/BuildConfig.kt @@ -5,7 +5,10 @@ package eu.kanade.tachiyomi.util.system import eu.kanade.tachiyomi.BuildConfig val analyticsIncluded: Boolean - inline get() = BuildConfig.INCLUDE_ANALYTICS + inline get() = BuildConfig.ANALYTICS_INCLUDED + +val updaterEnabled: Boolean + inline get() = BuildConfig.UPDATER_ENABLED val isDebugBuildType: Boolean inline get() = BuildConfig.BUILD_TYPE == "debug"