mirror of
https://github.com/fromchat-messenger/app.git
synced 2026-09-22 19:15:05 +03:00
Make the real version appear in About screen
Signed-off-by: denis0001-dev <denis0001.dev@ya.ru>
This commit is contained in:
@@ -62,8 +62,8 @@ extensions.configure<ApplicationExtension> {
|
||||
applicationId = "ru.fromchat"
|
||||
minSdk = 24
|
||||
targetSdk = 37
|
||||
versionCode = 1
|
||||
versionName = "1.0"
|
||||
versionCode = rootProject.extra["versionCode"] as Int
|
||||
versionName = rootProject.extra["versionName"] as String
|
||||
|
||||
ndk {
|
||||
abiFilters += listOf("arm64-v8a", "x86_64")
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
@file:Suppress("TaskMissingDescription")
|
||||
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.file.DirectoryProperty
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.tasks.Input
|
||||
import org.gradle.api.tasks.OutputDirectory
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.kotlin.multiplatform)
|
||||
alias(libs.plugins.compose.multiplatform)
|
||||
@@ -9,6 +16,54 @@ plugins {
|
||||
alias(libs.plugins.sqldelight)
|
||||
}
|
||||
|
||||
abstract class GenerateAppBuildInfoTask : DefaultTask() {
|
||||
@get:Input
|
||||
abstract val versionName: Property<String>
|
||||
|
||||
@get:Input
|
||||
abstract val versionCode: Property<Int>
|
||||
|
||||
@get:Input
|
||||
abstract val debugBuild: Property<Boolean>
|
||||
|
||||
@get:OutputDirectory
|
||||
abstract val outputDirectory: DirectoryProperty
|
||||
|
||||
@TaskAction
|
||||
fun generate() {
|
||||
val outRoot = outputDirectory.get().asFile
|
||||
check(outRoot.invariantSeparatorsPath.contains("/generated/")) {
|
||||
"AppBuildInfo must be written under a generated/ directory, got: $outRoot"
|
||||
}
|
||||
outRoot.deleteRecursively()
|
||||
outRoot.resolve("ru/fromchat").apply { mkdirs() }.resolve("AppBuildInfo.kt").writeText(
|
||||
"""
|
||||
|package ru.fromchat
|
||||
|
|
||||
|/** Injected by Gradle into generated sources (not under src/). */
|
||||
|object AppBuildInfo {
|
||||
| const val version = "${versionName.get()}"
|
||||
| const val versionCode = ${versionCode.get()}
|
||||
| const val isDebug = ${debugBuild.get()}
|
||||
|}
|
||||
|
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
val generateAppBuildInfo = tasks.register<GenerateAppBuildInfoTask>("generateAppBuildInfo") {
|
||||
versionName.set(rootProject.extra["versionName"] as String)
|
||||
versionCode.set(rootProject.extra["versionCode"] as Int)
|
||||
debugBuild.set(
|
||||
gradle.startParameter.taskNames.let { names ->
|
||||
!names.any { it.contains("Release", ignoreCase = true) } ||
|
||||
names.any { it.contains("Debug", ignoreCase = true) }
|
||||
},
|
||||
)
|
||||
outputDirectory.set(layout.buildDirectory.dir("generated/sources/appBuildInfo/kotlin"))
|
||||
}
|
||||
|
||||
kotlin {
|
||||
android {
|
||||
namespace = "ru.fromchat.shared"
|
||||
@@ -38,6 +93,10 @@ kotlin {
|
||||
}
|
||||
}
|
||||
|
||||
commonMain {
|
||||
kotlin.srcDir(generateAppBuildInfo.map { it.outputDirectory })
|
||||
}
|
||||
|
||||
commonMain.dependencies {
|
||||
implementation(libs.compose.runtime)
|
||||
implementation(libs.compose.foundation)
|
||||
@@ -124,6 +183,7 @@ compose.resources {
|
||||
|
||||
tasks.matching { it.name == "compileAndroidMain" || it.name == "compileKotlinIosArm64" }.configureEach {
|
||||
dependsOn("generateResourceAccessorsForCommonMain")
|
||||
dependsOn(generateAppBuildInfo)
|
||||
}
|
||||
|
||||
tasks.register("generateResourceAccessors") {
|
||||
@@ -135,4 +195,4 @@ tasks.register("generateResourceAccessors") {
|
||||
}.toTypedArray()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<string name="settings">Настройки</string>
|
||||
<string name="home">Главная</string>
|
||||
<string name="about">О приложении</string>
|
||||
<string name="about_version">Версия 1.0</string>
|
||||
<string name="about_version">Версия %1$s</string>
|
||||
<string name="about_link_telegram">Telegram</string>
|
||||
<string name="about_link_max">MAX</string>
|
||||
<string name="about_link_website">Сайт</string>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<string name="settings">Settings</string>
|
||||
<string name="home">Home</string>
|
||||
<string name="about">About</string>
|
||||
<string name="about_version">Version 1.0</string>
|
||||
<string name="about_version">Version %1$s</string>
|
||||
<string name="about_link_telegram">Telegram</string>
|
||||
<string name="about_link_max">MAX</string>
|
||||
<string name="about_link_website">Website</string>
|
||||
|
||||
@@ -37,6 +37,7 @@ import com.pr0gramm3r101.components.ListItem
|
||||
import com.pr0gramm3r101.ui.Website
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
import org.jetbrains.compose.resources.vectorResource
|
||||
import ru.fromchat.AppBuildInfo
|
||||
import ru.fromchat.Res
|
||||
import ru.fromchat.about
|
||||
import ru.fromchat.about_link_max
|
||||
@@ -111,7 +112,10 @@ fun AboutScreen() {
|
||||
BrandTitle(Modifier.padding(bottom = 4.dp))
|
||||
|
||||
Text(
|
||||
text = stringResource(Res.string.about_version),
|
||||
text = stringResource(
|
||||
Res.string.about_version,
|
||||
AppBuildInfo.version + if (AppBuildInfo.isDebug) "-beta" else "",
|
||||
),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
modifier = Modifier.padding(bottom = 16.dp)
|
||||
|
||||
@@ -8,6 +8,10 @@ plugins {
|
||||
alias(libs.plugins.google.services) apply false
|
||||
}
|
||||
|
||||
/** Single source of truth for app version (APK + generated [AppBuildInfo]). */
|
||||
extra["versionName"] = "1.1.3"
|
||||
extra["versionCode"] = 113
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
|
||||
Reference in New Issue
Block a user