diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 748a1ba83..22ec75bed 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -31,25 +31,25 @@ kotlin { configure { compileSdk { - version = release(36) { - minorApiLevel = 1 + version = release(NEWPIPE_VERSION_SDK_COMPILE_MAJOR) { + minorApiLevel = NEWPIPE_VERSION_SDK_COMPILE_MINOR } } - namespace = "org.schabi.newpipe" + namespace = NEWPIPE_APPLICATION_ID_OLD defaultConfig { - applicationId = "org.schabi.newpipe" + applicationId = NEWPIPE_APPLICATION_ID_OLD resValue("string", "app_name", "NewPipe") minSdk { - version = release(23) + version = release(NEWPIPE_VERSION_SDK_MIN) } 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 } testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/buildSrc/src/main/kotlin/ProjectConfig.kt b/buildSrc/src/main/kotlin/ProjectConfig.kt new file mode 100644 index 000000000..30a004c81 --- /dev/null +++ b/buildSrc/src/main/kotlin/ProjectConfig.kt @@ -0,0 +1,15 @@ +/* + * SPDX-FileCopyrightText: 2026 NewPipe e.V. + * 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" diff --git a/desktopApp/build.gradle.kts b/desktopApp/build.gradle.kts index 910d73647..a9d82ae0e 100644 --- a/desktopApp/build.gradle.kts +++ b/desktopApp/build.gradle.kts @@ -25,8 +25,8 @@ compose.desktop { nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) - packageName = "net.newpipe.app" - packageVersion = "1.0.0" + packageName = NEWPIPE_APPLICATION_ID_NEW + packageVersion = NEWPIPE_VERSION_NAME } } } diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index d15436466..f52e7a208 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -12,6 +12,24 @@ plugins { 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 { jvmToolchain(21) @@ -27,14 +45,14 @@ kotlin { } android { - namespace = "net.newpipe.app" + namespace = NEWPIPE_APPLICATION_ID_NEW compileSdk { - version = release(36) { - minorApiLevel = 1 + version = release(NEWPIPE_VERSION_SDK_COMPILE_MAJOR) { + minorApiLevel = NEWPIPE_VERSION_SDK_COMPILE_MINOR } } minSdk { - version = release(23) + version = release(NEWPIPE_VERSION_SDK_MIN) } androidResources { enable = true @@ -71,6 +89,7 @@ kotlin { sourceSets { commonMain { + kotlin.srcDir(buildConfigGenerator.map { it.destinationDir }) dependencies { implementation(libs.jetbrains.compose.runtime) implementation(libs.jetbrains.compose.foundation)