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
This commit is contained in:
AntsyLich 2025-03-08 03:10:56 +06:00 committed by GitHub
parent 85d168ed5e
commit 0893609ad2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 40 additions and 25 deletions

View File

@ -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

View File

@ -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)

View File

@ -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()})"

View File

@ -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}"

View File

@ -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) {

View File

@ -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"