Migrate to CalVer-like versioning

This commit is contained in:
Benoit Marty 2025-01-23 11:10:53 +01:00
parent 925db81ca5
commit ecfd449950

View file

@ -9,49 +9,30 @@ import org.gradle.api.JavaVersion
import org.gradle.jvm.toolchain.JavaLanguageVersion import org.gradle.jvm.toolchain.JavaLanguageVersion
/** /**
* Version codes are quite sensitive, because there is a mix between bundle and APKs, and we have to take into * Version codes are quite sensitive, because there is a mix between bundle and APKs.
* account the future upgrade of Element Android.
* Max versionCode allowed by the PlayStore (for information): * Max versionCode allowed by the PlayStore (for information):
* 2_100_000_000 * 2_100_000_000
* Current version code of EAx on the PlayStore, for the first uploaded beta (we cannot go below):
* ----1_001_000
* Current version code of EAx on the nightly:
* ----1_001_000
* Current version of Element Android (at some point EAx will replace this app) (v1.6.3)
* ----40_106_03a where a stands for the architecture: 1, 2, 3, 4 and 0 for the universal APK
* Current version of EAx distributed with Firebase app distribution:
* ----1_002_000
* Latest version of EAx distributed with Firebase app distribution (downgrading, so that's a problem)
* -------10_200
* Version when running the current debug build
* -------10_200
* *
* So adding 4_000_000 to the current version Code computed here should be fine, and since the versionCode * Also note that the versionCode is multiplied by 10 in app/build.gradle.kts#L168:
* is multiplied by 10 in app/build.gradle.kts#L168:
* ``` * ```
* output.versionCode.set((output.versionCode.get() ?: 0) * 10 + abiCode)) * output.versionCode.set((output.versionCode.get() ?: 0) * 10 + abiCode))
* ``` * ```
* we will have: * We are using a CalVer-like approach to version the application. The version code is calculated as follows:
* Release version: * - 4 digits for the year
* ---40_001_020 * - 2 digits for the month
* Nightly version: * - 2 digits for the release number
* ---40_001_020 * So for instance, the first release of Jan 2025 will have the version code: 20250100 (20_250_100)
* Debug version:
* ---40_010_200
*/ */
// Note: 2 digits max for each value private const val versionYear = 2025
private const val versionMajor = 0 private const val versionMonth = 1
private const val versionMinor = 7
// Note: even values are reserved for regular release, odd values for hotfix release. // Note: must be in [0,99]
// When creating a hotfix, you should decrease the value, since the current value private const val versionReleaseNumber = 0
// is the value for the next regular release.
private const val versionPatch = 7
object Versions { object Versions {
const val VERSION_CODE = 4_000_000 + versionMajor * 1_00_00 + versionMinor * 1_00 + versionPatch const val VERSION_CODE = versionYear * 10_000 + versionMonth * 100 + versionReleaseNumber
const val VERSION_NAME = "$versionMajor.$versionMinor.$versionPatch" const val VERSION_NAME = "$versionYear.$versionMonth.$versionReleaseNumber"
const val COMPILE_SDK = 35 const val COMPILE_SDK = 35
const val TARGET_SDK = 35 const val TARGET_SDK = 35