diff --git a/apps/mobile/apps/client/android/app/build.gradle.kts b/apps/mobile/apps/client/android/app/build.gradle.kts index 15f3f341..26417d23 100644 --- a/apps/mobile/apps/client/android/app/build.gradle.kts +++ b/apps/mobile/apps/client/android/app/build.gradle.kts @@ -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..properties keyAlias = keystoreProperties["keyAlias"] as String? keyPassword = keystoreProperties["keyPassword"] as String? storeFile = keystoreProperties["storeFile"]?.let { file(it) } diff --git a/apps/mobile/apps/client/android/key.properties b/apps/mobile/apps/client/android/key.dev.properties similarity index 100% rename from apps/mobile/apps/client/android/key.properties rename to apps/mobile/apps/client/android/key.dev.properties diff --git a/apps/mobile/apps/client/android/key.prod.properties b/apps/mobile/apps/client/android/key.prod.properties new file mode 100644 index 00000000..5612e20a --- /dev/null +++ b/apps/mobile/apps/client/android/key.prod.properties @@ -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 diff --git a/apps/mobile/apps/client/android/key.stage.properties b/apps/mobile/apps/client/android/key.stage.properties new file mode 100644 index 00000000..0ac47cb7 --- /dev/null +++ b/apps/mobile/apps/client/android/key.stage.properties @@ -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 diff --git a/apps/mobile/apps/staff/android/app/build.gradle.kts b/apps/mobile/apps/staff/android/app/build.gradle.kts index 4111f66b..d3f19e5f 100644 --- a/apps/mobile/apps/staff/android/app/build.gradle.kts +++ b/apps/mobile/apps/staff/android/app/build.gradle.kts @@ -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..properties keyAlias = keystoreProperties["keyAlias"] as String? keyPassword = keystoreProperties["keyPassword"] as String? storeFile = keystoreProperties["storeFile"]?.let { file(it) } diff --git a/apps/mobile/apps/staff/android/key.properties b/apps/mobile/apps/staff/android/key.dev.properties similarity index 100% rename from apps/mobile/apps/staff/android/key.properties rename to apps/mobile/apps/staff/android/key.dev.properties diff --git a/apps/mobile/apps/staff/android/key.prod.properties b/apps/mobile/apps/staff/android/key.prod.properties new file mode 100644 index 00000000..272755ca --- /dev/null +++ b/apps/mobile/apps/staff/android/key.prod.properties @@ -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 diff --git a/apps/mobile/apps/staff/android/key.stage.properties b/apps/mobile/apps/staff/android/key.stage.properties new file mode 100644 index 00000000..0fef76d1 --- /dev/null +++ b/apps/mobile/apps/staff/android/key.stage.properties @@ -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