diff --git a/frontend/admin-app/.gitignore b/frontend/admin-app/.gitignore index 96352b9..69d0ae1 100644 --- a/frontend/admin-app/.gitignore +++ b/frontend/admin-app/.gitignore @@ -44,6 +44,9 @@ app.*.map.json /android/app/profile /android/app/release +# Auto-generated version code (each build environment maintains its own counter) +/android/app/version.properties + # Signing keys (do NOT commit to public repos) android/key.properties android/app/keystore/ diff --git a/frontend/admin-app/android/app/build.gradle.kts b/frontend/admin-app/android/app/build.gradle.kts index 1b71d78..c20b7e6 100644 --- a/frontend/admin-app/android/app/build.gradle.kts +++ b/frontend/admin-app/android/app/build.gradle.kts @@ -1,5 +1,6 @@ import java.util.Properties import java.io.FileInputStream +import java.io.FileOutputStream plugins { id("com.android.application") @@ -14,6 +15,30 @@ if (keystorePropertiesFile.exists()) { keystoreProperties.load(FileInputStream(keystorePropertiesFile)) } +// ============================================ +// Auto-increment version code on each build +// ============================================ +val versionPropertiesFile = rootProject.file("app/version.properties") +val versionProperties = Properties() + +fun calculateNextVersionCode(): Int { + if (versionPropertiesFile.exists()) { + versionProperties.load(FileInputStream(versionPropertiesFile)) + } + val currentCode = versionProperties.getProperty("VERSION_CODE", "0").toInt() + val newCode = currentCode + 1 + versionProperties.setProperty("VERSION_CODE", newCode.toString()) + versionProperties.store(FileOutputStream(versionPropertiesFile), "Auto-generated version code - DO NOT EDIT MANUALLY") + return newCode +} + +val autoVersionCode = calculateNextVersionCode() + +fun getAutoVersionName(): String { + val flutterVersionName = flutter.versionName + return "$flutterVersionName.$autoVersionCode" +} + android { namespace = "cn.gogenex.genex_issuer" compileSdk = flutter.compileSdkVersion @@ -32,8 +57,8 @@ android { applicationId = "cn.gogenex.issuer" minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion - versionCode = flutter.versionCode - versionName = flutter.versionName + versionCode = autoVersionCode + versionName = getAutoVersionName() } signingConfigs { diff --git a/frontend/genex-mobile/.gitignore b/frontend/genex-mobile/.gitignore index 96352b9..69d0ae1 100644 --- a/frontend/genex-mobile/.gitignore +++ b/frontend/genex-mobile/.gitignore @@ -44,6 +44,9 @@ app.*.map.json /android/app/profile /android/app/release +# Auto-generated version code (each build environment maintains its own counter) +/android/app/version.properties + # Signing keys (do NOT commit to public repos) android/key.properties android/app/keystore/ diff --git a/frontend/genex-mobile/android/app/build.gradle.kts b/frontend/genex-mobile/android/app/build.gradle.kts index 5245765..a8c16cc 100644 --- a/frontend/genex-mobile/android/app/build.gradle.kts +++ b/frontend/genex-mobile/android/app/build.gradle.kts @@ -1,5 +1,6 @@ import java.util.Properties import java.io.FileInputStream +import java.io.FileOutputStream plugins { id("com.android.application") @@ -14,6 +15,30 @@ if (keystorePropertiesFile.exists()) { keystoreProperties.load(FileInputStream(keystorePropertiesFile)) } +// ============================================ +// Auto-increment version code on each build +// ============================================ +val versionPropertiesFile = rootProject.file("app/version.properties") +val versionProperties = Properties() + +fun calculateNextVersionCode(): Int { + if (versionPropertiesFile.exists()) { + versionProperties.load(FileInputStream(versionPropertiesFile)) + } + val currentCode = versionProperties.getProperty("VERSION_CODE", "0").toInt() + val newCode = currentCode + 1 + versionProperties.setProperty("VERSION_CODE", newCode.toString()) + versionProperties.store(FileOutputStream(versionPropertiesFile), "Auto-generated version code - DO NOT EDIT MANUALLY") + return newCode +} + +val autoVersionCode = calculateNextVersionCode() + +fun getAutoVersionName(): String { + val flutterVersionName = flutter.versionName + return "$flutterVersionName.$autoVersionCode" +} + android { namespace = "cn.gogenex.genex_consumer" compileSdk = flutter.compileSdkVersion @@ -33,8 +58,8 @@ android { applicationId = "cn.gogenex.consumer" minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion - versionCode = flutter.versionCode - versionName = flutter.versionName + versionCode = autoVersionCode + versionName = getAutoVersionName() } signingConfigs {