feat: implement flavor-specific key properties for staging and production environments

This commit is contained in:
Achintha Isuru
2026-03-09 16:34:42 -04:00
parent 2484c6cff2
commit c4dbdb5dcb
8 changed files with 64 additions and 4 deletions

View File

@@ -21,8 +21,20 @@ dartDefinesString.split(",").forEach {
}
}
// Load flavor-specific key properties: key.dev.properties, key.stage.properties, key.prod.properties
// The active flavor is resolved from the Gradle task name (e.g. assembleDevRelease -> dev)
fun resolveFlavorFromTask(): String {
val taskNames = gradle.startParameter.taskNames.joinToString(" ").lowercase()
return when {
taskNames.contains("prod") -> "prod"
taskNames.contains("stage") -> "stage"
else -> "dev"
}
}
val activeFlavorForSigning = resolveFlavorFromTask()
val keystoreProperties = Properties().apply {
val propertiesFile = rootProject.file("key.properties")
val propertiesFile = rootProject.file("key.${activeFlavorForSigning}.properties")
if (propertiesFile.exists()) {
load(propertiesFile.inputStream())
}
@@ -80,7 +92,7 @@ android {
keyAlias = System.getenv()["CM_KEY_ALIAS"]
keyPassword = System.getenv()["CM_KEY_PASSWORD"]
} else {
// Local development environment
// Local development environment — loads from key.<flavor>.properties
keyAlias = keystoreProperties["keyAlias"] as String?
keyPassword = keystoreProperties["keyPassword"] as String?
storeFile = keystoreProperties["storeFile"]?.let { file(it) }

View File

@@ -0,0 +1,9 @@
storePassword=krowwithus
keyPassword=krowwithus
keyAlias=krow_client_prod
storeFile=krow_with_us_client_prod.jks
###
### Client Prod
### SHA1: B2:80:46:90:7F:E5:9E:86:62:7B:06:90:AC:C0:20:02:73:5B:20:5C
### SHA256: D8:3C:B0:07:B5:95:3C:82:2F:2C:A9:F6:8D:6F:77:B9:31:9D:BE:E9:74:4A:59:D9:7F:DC:EB:E2:C6:26:AB:27

View File

@@ -0,0 +1,9 @@
storePassword=krowwithus
keyPassword=krowwithus
keyAlias=krow_client_stage
storeFile=krow_with_us_client_stage.jks
###
### Client Stage
### SHA1: 89:9F:12:9E:A5:18:AC:1D:75:73:29:0B:F2:C2:E6:EB:38:B0:F0:A0
### SHA256: 80:13:10:CB:88:A8:8D:E9:F6:9E:D6:55:53:9C:BE:2D:D4:9C:7A:26:56:A3:E9:70:7C:F5:9A:A7:20:1A:6D:FE

View File

@@ -21,8 +21,20 @@ dartDefinesString.split(",").forEach {
}
}
// Load flavor-specific key properties: key.dev.properties, key.stage.properties, key.prod.properties
// The active flavor is resolved from the Gradle task name (e.g. assembleDevRelease -> dev)
fun resolveFlavorFromTask(): String {
val taskNames = gradle.startParameter.taskNames.joinToString(" ").lowercase()
return when {
taskNames.contains("prod") -> "prod"
taskNames.contains("stage") -> "stage"
else -> "dev"
}
}
val activeFlavorForSigning = resolveFlavorFromTask()
val keystoreProperties = Properties().apply {
val propertiesFile = rootProject.file("key.properties")
val propertiesFile = rootProject.file("key.${activeFlavorForSigning}.properties")
if (propertiesFile.exists()) {
load(propertiesFile.inputStream())
}
@@ -81,7 +93,7 @@ android {
keyAlias = System.getenv()["CM_KEY_ALIAS"]
keyPassword = System.getenv()["CM_KEY_PASSWORD"]
} else {
// Local development environment
// Local development environment — loads from key.<flavor>.properties
keyAlias = keystoreProperties["keyAlias"] as String?
keyPassword = keystoreProperties["keyPassword"] as String?
storeFile = keystoreProperties["storeFile"]?.let { file(it) }

View File

@@ -0,0 +1,9 @@
storePassword=krowwithus
keyPassword=krowwithus
keyAlias=krow_staff_prod
storeFile=krow_with_us_staff_prod.jks
###
### Staff Prod
### SHA1: B3:9A:AE:EC:8D:A2:C8:88:5F:FA:AC:9B:31:0A:AC:F3:D6:7D:82:83
### SHA256: 0C:F3:5F:B5:C5:DA:E3:94:E1:FB:9E:D9:84:4F:2D:4A:E5:1B:48:FB:33:A1:DD:F3:43:41:22:32:A4:9A:25:E8

View File

@@ -0,0 +1,9 @@
storePassword=krowwithus
keyPassword=krowwithus
keyAlias=krow_staff_stage
storeFile=krow_with_us_staff_stage.jks
###
### Staff Stage
### SHA1: E8:C4:B8:F5:5E:19:04:31:D6:E5:16:76:47:62:D0:5B:2F:F3:CE:05
### SHA256: 25:55:68:E6:77:03:33:E1:D0:4E:F4:75:6E:6B:3D:3D:A2:DB:9B:2B:5E:AD:FF:CD:22:64:CE:3F:E8:AF:60:50