Better share version information between modules

Move important version properties to buildSrc directory to access between modules
as needed.

Also add a simple task to generate a simple BuildConfig class to access version name.
This is better than adding dependency on a third-party library/plugin.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta 2026-05-11 16:45:56 +08:00
parent 53f36154aa
commit d1bc8c23cf
4 changed files with 48 additions and 14 deletions

View file

@ -31,25 +31,25 @@ kotlin {
configure<ApplicationExtension> { configure<ApplicationExtension> {
compileSdk { compileSdk {
version = release(36) { version = release(NEWPIPE_VERSION_SDK_COMPILE_MAJOR) {
minorApiLevel = 1 minorApiLevel = NEWPIPE_VERSION_SDK_COMPILE_MINOR
} }
} }
namespace = "org.schabi.newpipe" namespace = NEWPIPE_APPLICATION_ID_OLD
defaultConfig { defaultConfig {
applicationId = "org.schabi.newpipe" applicationId = NEWPIPE_APPLICATION_ID_OLD
resValue("string", "app_name", "NewPipe") resValue("string", "app_name", "NewPipe")
minSdk { minSdk {
version = release(23) version = release(NEWPIPE_VERSION_SDK_MIN)
} }
targetSdk { targetSdk {
version = release(35) version = release(NEWPIPE_VERSION_SDK_TARGET)
} }
versionCode = System.getProperty("versionCodeOverride")?.toInt() ?: 1011 versionCode = System.getProperty("versionCodeOverride")?.toInt() ?: NEWPIPE_VERSION_CODE
versionName = "0.28.6" versionName = NEWPIPE_VERSION_NAME
System.getProperty("versionNameSuffix")?.let { versionNameSuffix = it } System.getProperty("versionNameSuffix")?.let { versionNameSuffix = it }
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

View file

@ -0,0 +1,15 @@
/*
* SPDX-FileCopyrightText: 2026 NewPipe e.V. <https://newpipe-ev.de>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
const val NEWPIPE_VERSION_SDK_COMPILE_MAJOR = 36
const val NEWPIPE_VERSION_SDK_COMPILE_MINOR = 1
const val NEWPIPE_VERSION_SDK_MIN = 23
const val NEWPIPE_VERSION_SDK_TARGET = 35
const val NEWPIPE_VERSION_CODE = 1011
const val NEWPIPE_VERSION_NAME = "0.28.6"
const val NEWPIPE_APPLICATION_ID_OLD = "org.schabi.newpipe"
const val NEWPIPE_APPLICATION_ID_NEW = "net.newpipe.app"

View file

@ -25,8 +25,8 @@ compose.desktop {
nativeDistributions { nativeDistributions {
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
packageName = "net.newpipe.app" packageName = NEWPIPE_APPLICATION_ID_NEW
packageVersion = "1.0.0" packageVersion = NEWPIPE_VERSION_NAME
} }
} }
} }

View file

@ -12,6 +12,24 @@ plugins {
alias(libs.plugins.jetbrains.kotlinx.serialization) alias(libs.plugins.jetbrains.kotlinx.serialization)
} }
// Better than adding a third-party dependency for something as simple as this
// https://stackoverflow.com/a/74771876/8446131
val buildConfigGenerator by tasks.registering(Sync::class) {
val buildConfigPackage = NEWPIPE_APPLICATION_ID_NEW
val rawClass = """
package $buildConfigPackage
object BuildConfig {
const val VERSION_NAME = "$NEWPIPE_VERSION_NAME"
}
""".trimIndent()
from(resources.text.fromString(rawClass)) {
rename { "BuildConfig.kt" }
into(buildConfigPackage.replace(".", "/"))
}
into(layout.buildDirectory.dir("generated/kotlin/"))
}
kotlin { kotlin {
jvmToolchain(21) jvmToolchain(21)
@ -27,14 +45,14 @@ kotlin {
} }
android { android {
namespace = "net.newpipe.app" namespace = NEWPIPE_APPLICATION_ID_NEW
compileSdk { compileSdk {
version = release(36) { version = release(NEWPIPE_VERSION_SDK_COMPILE_MAJOR) {
minorApiLevel = 1 minorApiLevel = NEWPIPE_VERSION_SDK_COMPILE_MINOR
} }
} }
minSdk { minSdk {
version = release(23) version = release(NEWPIPE_VERSION_SDK_MIN)
} }
androidResources { androidResources {
enable = true enable = true
@ -71,6 +89,7 @@ kotlin {
sourceSets { sourceSets {
commonMain { commonMain {
kotlin.srcDir(buildConfigGenerator.map { it.destinationDir })
dependencies { dependencies {
implementation(libs.jetbrains.compose.runtime) implementation(libs.jetbrains.compose.runtime)
implementation(libs.jetbrains.compose.foundation) implementation(libs.jetbrains.compose.foundation)