From c6ccd1e2e3ca46227b1d3c0dd62d089df74c9ba4 Mon Sep 17 00:00:00 2001 From: Achintha Isuru Date: Tue, 18 Nov 2025 17:52:23 -0500 Subject: [PATCH] feat: configure Firebase and signing for multiple environments in mobile app --- build.gradle | 141 ++++++++++++++++++ .../client-app/android/app/build.gradle | 53 +++++-- .../client-app/android/key_dev.properties | 4 + .../client-app/android/key_prod.properties | 4 + .../client-app/android/key_staging.properties | 4 + mobile-apps/client-app/firebase.json | 65 +++++++- .../staff-app/android/app/build.gradle | 57 ++++--- .../app/src/staging/google-services.json | 19 +++ .../staff-app/android/key_dev.properties | 4 + .../staff-app/android/key_prod.properties | 4 + .../staff-app/android/key_staging.properties | 4 + mobile-apps/staff-app/deploy_dev.sh | 2 +- mobile-apps/staff-app/firebase.json | 93 +++++++++++- .../ios/Runner.xcodeproj/project.pbxproj | 38 ++--- .../flavors/staging/GoogleService-Info.plist | 4 +- .../lib/firebase_options_staging.dart | 6 +- 16 files changed, 443 insertions(+), 59 deletions(-) create mode 100644 build.gradle create mode 100644 mobile-apps/client-app/android/key_dev.properties create mode 100644 mobile-apps/client-app/android/key_prod.properties create mode 100644 mobile-apps/client-app/android/key_staging.properties create mode 100644 mobile-apps/staff-app/android/key_dev.properties create mode 100644 mobile-apps/staff-app/android/key_prod.properties create mode 100644 mobile-apps/staff-app/android/key_staging.properties diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..d5d64f50 --- /dev/null +++ b/build.gradle @@ -0,0 +1,141 @@ +plugins { + id "com.android.application" + // START: FlutterFire Configuration + id 'com.google.gms.google-services' + id 'com.google.firebase.crashlytics' + // END: FlutterFire Configuration + id "kotlin-android" + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id "dev.flutter.flutter-gradle-plugin" +} + +android { + namespace = "com.example.troywallet" + compileSdk = 36 + ndkVersion = "25.1.8937393" + //ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + coreLibraryDesugaringEnabled true + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_1_8 + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "com.example.troywallet" + namespace("com.example.troywallet") + minSdk = 29 + targetSdk = 35 + versionCode = flutter.versionCode + versionName = flutter.versionName + multiDexEnabled true + + } + + // KeyStore ////////////////////////////////////////////////// + // - kast.keystore..alias android..pw=android..pw=android + def keystorePropertiesFileNameDev = 'kast_key_dev.properties' + def keystorePropertiesDev = new Properties() + keystorePropertiesDev.load(new FileInputStream(rootProject.file(keystorePropertiesFileNameDev))) + + def keystorePropertiesFileNameUat = 'kast_key_uat.properties' + def keystorePropertiesUat = new Properties() + keystorePropertiesUat.load(new FileInputStream(rootProject.file(keystorePropertiesFileNameUat))) + + def keystorePropertiesFileNameStaging = 'kast_key_staging.properties' + def keystorePropertiesStaging = new Properties() + keystorePropertiesStaging.load(new FileInputStream(rootProject.file(keystorePropertiesFileNameStaging))) + + def keystorePropertiesFileNameProd = 'kast_key_prod.properties' + def keystorePropertiesProd = new Properties() + keystorePropertiesProd.load(new FileInputStream(rootProject.file(keystorePropertiesFileNameProd))) + + + signingConfigs { + configDev { + keyAlias keystorePropertiesDev['keyAlias'] + keyPassword keystorePropertiesDev['keyPassword'] + storeFile file('../kast_android_dev.jks') //keystorePropertiesSit['storeFile'] + storePassword keystorePropertiesDev['storePassword'] + } + configUat { + keyAlias keystorePropertiesUat['keyAlias'] + keyPassword keystorePropertiesUat['keyPassword'] + storeFile file('../kast_android_uat.jks') //keystorePropertiesPat['storeFile'] + storePassword keystorePropertiesUat['storePassword'] + } + + configStaging { + keyAlias keystorePropertiesStaging['keyAlias'] + keyPassword keystorePropertiesStaging['keyPassword'] + storeFile file('../kast_android_staging.jks') //keystorePropertiesPat['storeFile'] + storePassword keystorePropertiesStaging['storePassword'] + } + configProd { + keyAlias keystorePropertiesProd['keyAlias'] + keyPassword keystorePropertiesProd['keyPassword'] + storeFile file('../kast_android_prod.jks') + storePassword keystorePropertiesProd['storePassword'] + } + } + + flavorDimensions "default" + productFlavors { + dev { + dimension "default" + applicationId "dev.kastcard.com" + resValue "string", "app_name", "KAST DEV" + resValue "string", "deeplink_prefix", "/dls" + resValue "drawable", "ic_launcher", "@mipmap/ic_launcher_dev" + signingConfig signingConfigs.configDev + } + uat { + dimension "default" + applicationId "uat.kastcard.com" + resValue "string", "app_name", "KAST UAT" + resValue "string", "deeplink_prefix", "/dlp" + resValue "drawable", "ic_launcher", "@mipmap/ic_launcher_uat" + signingConfig signingConfigs.configUat + } + staging { + dimension "default" + applicationId "stg.kastcard.com" + resValue "string", "app_name", "KAST Staging" + resValue "string", "deeplink_prefix", "/dlp" + resValue "drawable", "ic_launcher", "@mipmap/ic_launcher_staging" + signingConfig signingConfigs.configStaging + } + prod { + dimension "default" + applicationId "com.kastfinance.app" + resValue "string", "app_name", "KAST" + resValue "string", "deeplink_prefix", "/dlp" + resValue "drawable", "ic_launcher", "@mipmap/ic_launcher_prod" + signingConfig signingConfigs.configProd + } + + } + + buildTypes { + release { + shrinkResources false + minifyEnabled false + } + + } +} + +flutter { + source = "../.." +} + +dependencies { + implementation "com.sumsub.sns:idensic-mobile-sdk-videoident:1.33.1" + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.2' + implementation(files("libs/mdisdk-release-1.2.54.aar")) +} diff --git a/mobile-apps/client-app/android/app/build.gradle b/mobile-apps/client-app/android/app/build.gradle index f2e62040..28eb9650 100644 --- a/mobile-apps/client-app/android/app/build.gradle +++ b/mobile-apps/client-app/android/app/build.gradle @@ -35,11 +35,47 @@ android { flavorDimensions "release-type" + def keystorePropertiesFileNameDev = "key_dev.properties" + def keystorePropertiesDev = new Properties() + keystorePropertiesDev.load(new FileInputStream(rootProject.file(keystorePropertiesFileNameDev))) + + def keystorePropertiesFileNameStaging = "key_staging.properties" + def keystorePropertiesStaging = new Properties() + keystorePropertiesStaging.load(new FileInputStream(rootProject.file(keystorePropertiesFileNameStaging))) + + def keystorePropertiesFileNameProd = "key_prod.properties" + def keystorePropertiesProd = new Properties() + keystorePropertiesProd.load(new FileInputStream(rootProject.file(keystorePropertiesFileNameProd))) + + signingConfigs { + configDev { + keyAlias keystorePropertiesDev['keyAlias'] + keyPassword keystorePropertiesDev['keyPassword'] + storeFile file('../key_dev.jks') + storePassword keystorePropertiesDev['storePassword'] + } + + configStaging { + keyAlias keystorePropertiesStaging['keyAlias'] + keyPassword keystorePropertiesStaging['keyPassword'] + storeFile file('../key_staging.jks') + storePassword keystorePropertiesStaging['storePassword'] + } + + configProd { + keyAlias keystorePropertiesProd['keyAlias'] + keyPassword keystorePropertiesProd['keyPassword'] + storeFile file('../key_staging.jks') + storePassword keystorePropertiesProd['storePassword'] + } + } + productFlavors { dev { dimension "release-type" applicationIdSuffix ".dev" versionNameSuffix "-dev" + signingConfig signingConfigs.configDev manifestPlaceholders = [ appLabel: "Krow Business dev", appIcon: "@mipmap/ic_launcher_dev" @@ -50,6 +86,7 @@ android { dimension "release-type" applicationIdSuffix ".staging" versionNameSuffix "-staging" + signingConfig signingConfigs.configStaging manifestPlaceholders = [ appLabel: "Krow Business staging", appIcon: "@mipmap/ic_launcher_dev" @@ -58,27 +95,13 @@ android { prod { dimension "release-type" + signingConfig signingConfigs.configProd manifestPlaceholders = [ appLabel: "Krow Business", appIcon: "@mipmap/ic_launcher" ] } } - - signingConfigs { - release { - keyAlias = keystoreProperties['keyAliasClient'] - keyPassword = keystoreProperties['keyPassword'] - storeFile = keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null - storePassword = keystoreProperties['storePassword'] - } - } - - buildTypes { - release { - signingConfig = signingConfigs.release - } - } } flutter { diff --git a/mobile-apps/client-app/android/key_dev.properties b/mobile-apps/client-app/android/key_dev.properties new file mode 100644 index 00000000..4be9bfab --- /dev/null +++ b/mobile-apps/client-app/android/key_dev.properties @@ -0,0 +1,4 @@ +storePassword=krowdev +keyPassword=krowdev +keyAlias=staff-dev +storeFile=kast_android_dev.jks \ No newline at end of file diff --git a/mobile-apps/client-app/android/key_prod.properties b/mobile-apps/client-app/android/key_prod.properties new file mode 100644 index 00000000..9914a85b --- /dev/null +++ b/mobile-apps/client-app/android/key_prod.properties @@ -0,0 +1,4 @@ +storePassword=krowstaging +keyPassword=krowstaging +keyAlias=staff-staging +storeFile=key_staging.jks \ No newline at end of file diff --git a/mobile-apps/client-app/android/key_staging.properties b/mobile-apps/client-app/android/key_staging.properties new file mode 100644 index 00000000..9914a85b --- /dev/null +++ b/mobile-apps/client-app/android/key_staging.properties @@ -0,0 +1,4 @@ +storePassword=krowstaging +keyPassword=krowstaging +keyAlias=staff-staging +storeFile=key_staging.jks \ No newline at end of file diff --git a/mobile-apps/client-app/firebase.json b/mobile-apps/client-app/firebase.json index d12ec15b..483a5629 100644 --- a/mobile-apps/client-app/firebase.json +++ b/mobile-apps/client-app/firebase.json @@ -1 +1,64 @@ -{"flutter":{"platforms":{"android":{"default":{"projectId":"krow-staging","appId":"1:14482748607:android:85b147490ff76b6924820a","fileOutput":"android/app/google-services.json"},"buildConfigurations":{"src/dev":{"projectId":"krow-workforce-dev","appId":"1:933560802882:android:edcddb83ea4bbb517757db","fileOutput":"android/app/src/dev/google-services.json"},"src/staging":{"projectId":"krow-workforce-staging","appId":"1:1032971403708:android:d35f6d13a9e03bcb356bb9","fileOutput":"android/app/src/staging/google-services.json"}}},"ios":{"default":{"projectId":"krow-staging","appId":"1:14482748607:ios:229a7ce2d64cb09f24820a","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"},"targets":{"Runner":{"projectId":"krow-workforce-staging","appId":"1:1032971403708:ios:b1a21a7337a268b3356bb9","uploadDebugSymbols":false,"fileOutput":"ios/flavors/staging/GoogleService-Info.plist"}}},"dart":{"lib/firebase_options.dart":{"projectId":"krow-staging","configurations":{"android":"1:14482748607:android:85b147490ff76b6924820a","ios":"1:14482748607:ios:229a7ce2d64cb09f24820a"}},"lib/firebase_options_dev.dart":{"projectId":"krow-workforce-dev","configurations":{"android":"1:933560802882:android:edcddb83ea4bbb517757db","ios":"1:933560802882:ios:7f0632ecbeff8f027757db"}},"lib/firebase_options_staging.dart":{"projectId":"krow-workforce-staging","configurations":{"android":"1:1032971403708:android:d35f6d13a9e03bcb356bb9","ios":"1:1032971403708:ios:b1a21a7337a268b3356bb9"}}}}}} \ No newline at end of file +{ + "flutter": { + "platforms": { + "android": { + "default": { + "projectId": "krow-staging", + "appId": "1:14482748607:android:85b147490ff76b6924820a", + "fileOutput": "android/app/google-services.json" + }, + "buildConfigurations": { + "src/dev": { + "projectId": "krow-workforce-dev", + "appId": "1:933560802882:android:edcddb83ea4bbb517757db", + "fileOutput": "android/app/src/dev/google-services.json" + }, + "src/staging": { + "projectId": "krow-workforce-staging", + "appId": "1:1032971403708:android:d35f6d13a9e03bcb356bb9", + "fileOutput": "android/app/src/staging/google-services.json" + } + } + }, + "ios": { + "default": { + "projectId": "krow-staging", + "appId": "1:14482748607:ios:229a7ce2d64cb09f24820a", + "uploadDebugSymbols": false, + "fileOutput": "ios/Runner/GoogleService-Info.plist" + }, + "targets": { + "Runner": { + "projectId": "krow-workforce-staging", + "appId": "1:1032971403708:ios:b1a21a7337a268b3356bb9", + "uploadDebugSymbols": false, + "fileOutput": "ios/flavors/staging/GoogleService-Info.plist" + } + } + }, + "dart": { + "lib/firebase_options.dart": { + "projectId": "krow-staging", + "configurations": { + "android": "1:14482748607:android:85b147490ff76b6924820a", + "ios": "1:14482748607:ios:229a7ce2d64cb09f24820a" + } + }, + "lib/firebase_options_dev.dart": { + "projectId": "krow-workforce-dev", + "configurations": { + "android": "1:933560802882:android:edcddb83ea4bbb517757db", + "ios": "1:933560802882:ios:7f0632ecbeff8f027757db" + } + }, + "lib/firebase_options_staging.dart": { + "projectId": "krow-workforce-staging", + "configurations": { + "android": "1:1032971403708:android:d35f6d13a9e03bcb356bb9", + "ios": "1:1032971403708:ios:b1a21a7337a268b3356bb9" + } + } + } + } + } +} diff --git a/mobile-apps/staff-app/android/app/build.gradle b/mobile-apps/staff-app/android/app/build.gradle index 0fa5df71..cd34cd08 100644 --- a/mobile-apps/staff-app/android/app/build.gradle +++ b/mobile-apps/staff-app/android/app/build.gradle @@ -1,12 +1,12 @@ plugins { id "com.android.application" - id 'com.google.gms.google-services' + id "com.google.gms.google-services" id "kotlin-android" id "dev.flutter.flutter-gradle-plugin" } def keystoreProperties = new Properties() -def keystorePropertiesFile = rootProject.file('key.properties') +def keystorePropertiesFile = rootProject.file("key.properties") if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) } @@ -33,13 +33,49 @@ android { versionName = flutter.versionName } + def keystorePropertiesFileNameDev = "key_dev.properties" + def keystorePropertiesDev = new Properties() + keystorePropertiesDev.load(new FileInputStream(rootProject.file(keystorePropertiesFileNameDev))) + + def keystorePropertiesFileNameStaging = "key_staging.properties" + def keystorePropertiesStaging = new Properties() + keystorePropertiesStaging.load(new FileInputStream(rootProject.file(keystorePropertiesFileNameStaging))) + + def keystorePropertiesFileNameProd = "key_prod.properties" + def keystorePropertiesProd = new Properties() + keystorePropertiesProd.load(new FileInputStream(rootProject.file(keystorePropertiesFileNameProd))) + flavorDimensions "release-type" + signingConfigs { + configDev { + keyAlias keystorePropertiesDev['keyAlias'] + keyPassword keystorePropertiesDev['keyPassword'] + storeFile file('../key_dev.jks') + storePassword keystorePropertiesDev['storePassword'] + } + + configStaging { + keyAlias keystorePropertiesStaging['keyAlias'] + keyPassword keystorePropertiesStaging['keyPassword'] + storeFile file('../key_staging.jks') + storePassword keystorePropertiesStaging['storePassword'] + } + + configProd { + keyAlias keystorePropertiesProd['keyAlias'] + keyPassword keystorePropertiesProd['keyPassword'] + storeFile file('../key_staging.jks') + storePassword keystorePropertiesProd['storePassword'] + } + } + productFlavors { dev { dimension "release-type" applicationIdSuffix ".dev" versionNameSuffix "-dev" + signingConfig signingConfigs.configDev manifestPlaceholders = [ appLabel: "Krow Staff dev", appIcon : "@mipmap/ic_launcher_dev" @@ -50,6 +86,7 @@ android { dimension "release-type" applicationIdSuffix ".staging" versionNameSuffix "-staging" + signingConfig signingConfigs.configStaging manifestPlaceholders = [ appLabel: "Krow Staff staging", appIcon : "@mipmap/ic_launcher_dev" @@ -58,27 +95,13 @@ android { prod { dimension "release-type" + signingConfig signingConfigs.configProd manifestPlaceholders = [ appLabel: "Krow Staff", appIcon : "@mipmap/ic_launcher" ] } } - - signingConfigs { - release { - keyAlias = keystoreProperties['keyAlias'] - keyPassword = keystoreProperties['keyPassword'] - storeFile = keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null - storePassword = keystoreProperties['storePassword'] - } - } - - buildTypes { - release { - signingConfig = signingConfigs.release - } - } } flutter { diff --git a/mobile-apps/staff-app/android/app/src/staging/google-services.json b/mobile-apps/staff-app/android/app/src/staging/google-services.json index fce47d44..a22e46ce 100644 --- a/mobile-apps/staff-app/android/app/src/staging/google-services.json +++ b/mobile-apps/staff-app/android/app/src/staging/google-services.json @@ -24,6 +24,25 @@ } } }, + { + "client_info": { + "mobilesdk_app_id": "1:1032971403708:android:6e5031c203f01cc2356bb9", + "android_client_info": { + "package_name": "com.krow.app.staff.staging" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyAZ4dOatvf3ZBt4qnbSlIvJ51bblHaRsRw" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + }, { "client_info": { "mobilesdk_app_id": "1:1032971403708:android:87edb39679f806ab356bb9", diff --git a/mobile-apps/staff-app/android/key_dev.properties b/mobile-apps/staff-app/android/key_dev.properties new file mode 100644 index 00000000..4be9bfab --- /dev/null +++ b/mobile-apps/staff-app/android/key_dev.properties @@ -0,0 +1,4 @@ +storePassword=krowdev +keyPassword=krowdev +keyAlias=staff-dev +storeFile=kast_android_dev.jks \ No newline at end of file diff --git a/mobile-apps/staff-app/android/key_prod.properties b/mobile-apps/staff-app/android/key_prod.properties new file mode 100644 index 00000000..9914a85b --- /dev/null +++ b/mobile-apps/staff-app/android/key_prod.properties @@ -0,0 +1,4 @@ +storePassword=krowstaging +keyPassword=krowstaging +keyAlias=staff-staging +storeFile=key_staging.jks \ No newline at end of file diff --git a/mobile-apps/staff-app/android/key_staging.properties b/mobile-apps/staff-app/android/key_staging.properties new file mode 100644 index 00000000..9914a85b --- /dev/null +++ b/mobile-apps/staff-app/android/key_staging.properties @@ -0,0 +1,4 @@ +storePassword=krowstaging +keyPassword=krowstaging +keyAlias=staff-staging +storeFile=key_staging.jks \ No newline at end of file diff --git a/mobile-apps/staff-app/deploy_dev.sh b/mobile-apps/staff-app/deploy_dev.sh index 50fb7efe..28fc4b4c 100755 --- a/mobile-apps/staff-app/deploy_dev.sh +++ b/mobile-apps/staff-app/deploy_dev.sh @@ -3,7 +3,7 @@ set -e #dart run build_runner build --delete-conflicting-outputs -#flutter build appbundle --flavor dev --target-platform android-arm,android-arm64,android-x64 -t lib/main_dev.dart +flutter build appbundle --flavor dev --target-platform android-arm,android-arm64,android-x64 -t lib/main_dev.dart flutter build ipa --flavor dev -t lib/main_dev.dart cd android diff --git a/mobile-apps/staff-app/firebase.json b/mobile-apps/staff-app/firebase.json index cb9110d9..807fcdff 100644 --- a/mobile-apps/staff-app/firebase.json +++ b/mobile-apps/staff-app/firebase.json @@ -1 +1,92 @@ -{"flutter":{"platforms":{"android":{"default":{"projectId":"krow-workforce-dev","appId":"1:933560802882:android:f4587798877cbb917757db","fileOutput":"android/app/google-services.json"},"buildConfigurations":{"src/dev":{"projectId":"krow-workforce-dev","appId":"1:933560802882:android:d49b8c0f4d19e95e7757db","fileOutput":"android/app/src/dev/google-services.json"},"src/staging":{"projectId":"krow-workforce-staging","appId":"1:1032971403708:android:87edb39679f806ab356bb9","fileOutput":"android/app/src/staging/google-services.json"},"src/prod":{"projectId":"krow-workforce-production","appId":"1:705380165824:android:e028f36e679701cbf1e525","fileOutput":"android/app/src/prod/google-services.json"}}},"ios":{"default":{"projectId":"krow-workforce-dev","appId":"1:933560802882:ios:07becdd41ac6ca627757db","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"},"buildConfigurations":{"Debug-dev":{"projectId":"krow-workforce-dev","appId":"1:933560802882:ios:7264452527da24537757db","uploadDebugSymbols":false,"fileOutput":"ios/flavors/dev/GoogleService-Info.plist"},"Profile-dev":{"projectId":"krow-workforce-dev","appId":"1:933560802882:ios:07becdd41ac6ca627757db","uploadDebugSymbols":false,"fileOutput":"ios/flavors/dev/GoogleService-Info.plist"},"Release-dev":{"projectId":"krow-workforce-dev","appId":"1:933560802882:ios:07becdd41ac6ca627757db","uploadDebugSymbols":false,"fileOutput":"ios/flavors/dev/GoogleService-Info.plist"},"Debug-staging":{"projectId":"krow-workforce-staging","appId":"1:1032971403708:ios:1d9b09307e6f3983356bb9","uploadDebugSymbols":false,"fileOutput":"ios/flavors/staging/GoogleService-Info.plist"},"Profile-staging":{"projectId":"krow-workforce-staging","appId":"1:1032971403708:ios:1d9b09307e6f3983356bb9","uploadDebugSymbols":false,"fileOutput":"ios/flavors/staging/GoogleService-Info.plist"},"Release-staging":{"projectId":"krow-workforce-staging","appId":"1:1032971403708:ios:1d9b09307e6f3983356bb9","uploadDebugSymbols":false,"fileOutput":"ios/flavors/staging/GoogleService-Info.plist"}}},"dart":{"lib/firebase_options_dev.dart":{"projectId":"krow-workforce-dev","configurations":{"android":"1:933560802882:android:d49b8c0f4d19e95e7757db","ios":"1:933560802882:ios:7264452527da24537757db"}},"lib/firebase_options_staging.dart":{"projectId":"krow-workforce-staging","configurations":{"android":"1:1032971403708:android:87edb39679f806ab356bb9","ios":"1:1032971403708:ios:1d9b09307e6f3983356bb9"}}}}}} \ No newline at end of file +{ + "flutter": { + "platforms": { + "android": { + "default": { + "projectId": "krow-workforce-dev", + "appId": "1:933560802882:android:f4587798877cbb917757db", + "fileOutput": "android/app/google-services.json" + }, + "buildConfigurations": { + "src/dev": { + "projectId": "krow-workforce-dev", + "appId": "1:933560802882:android:d49b8c0f4d19e95e7757db", + "fileOutput": "android/app/src/dev/google-services.json" + }, + "src/staging": { + "projectId": "krow-workforce-staging", + "appId": "1:1032971403708:android:6e5031c203f01cc2356bb9", + "fileOutput": "android/app/src/staging/google-services.json" + }, + "src/prod": { + "projectId": "krow-workforce-production", + "appId": "1:705380165824:android:e028f36e679701cbf1e525", + "fileOutput": "android/app/src/prod/google-services.json" + } + } + }, + "ios": { + "default": { + "projectId": "krow-workforce-dev", + "appId": "1:933560802882:ios:7264452527da24537757db", + "uploadDebugSymbols": false, + "fileOutput": "ios/flavors/dev/GoogleService-Info.plist" + }, + "buildConfigurations": { + "Debug-dev": { + "projectId": "krow-workforce-dev", + "appId": "1:933560802882:ios:7264452527da24537757db", + "uploadDebugSymbols": false, + "fileOutput": "ios/flavors/dev/GoogleService-Info.plist" + }, + "Profile-dev": { + "projectId": "krow-workforce-dev", + "appId": "1:933560802882:ios:7264452527da24537757db", + "uploadDebugSymbols": false, + "fileOutput": "ios/flavors/dev/GoogleService-Info.plist" + }, + "Release-dev": { + "projectId": "krow-workforce-dev", + "appId": "1:933560802882:ios:7264452527da24537757db", + "uploadDebugSymbols": false, + "fileOutput": "ios/flavors/dev/GoogleService-Info.plist" + }, + "Debug-staging": { + "projectId": "krow-workforce-staging", + "appId": "1:1032971403708:ios:134753083678e855356bb9", + "uploadDebugSymbols": false, + "fileOutput": "ios/flavors/staging/GoogleService-Info.plist" + }, + "Profile-staging": { + "projectId": "krow-workforce-staging", + "appId": "1:1032971403708:ios:134753083678e855356bb9", + "uploadDebugSymbols": false, + "fileOutput": "ios/flavors/staging/GoogleService-Info.plist" + }, + "Release-staging": { + "projectId": "krow-workforce-staging", + "appId": "1:1032971403708:ios:134753083678e855356bb9", + "uploadDebugSymbols": false, + "fileOutput": "ios/flavors/staging/GoogleService-Info.plist" + } + } + }, + "dart": { + "lib/firebase_options_dev.dart": { + "projectId": "krow-workforce-dev", + "configurations": { + "android": "1:933560802882:android:d49b8c0f4d19e95e7757db", + "ios": "1:933560802882:ios:7264452527da24537757db" + } + }, + "lib/firebase_options_staging.dart": { + "projectId": "krow-workforce-staging", + "configurations": { + "android": "1:1032971403708:android:6e5031c203f01cc2356bb9", + "ios": "1:1032971403708:ios:134753083678e855356bb9" + } + } + } + } + } +} diff --git a/mobile-apps/staff-app/ios/Runner.xcodeproj/project.pbxproj b/mobile-apps/staff-app/ios/Runner.xcodeproj/project.pbxproj index 0134f18d..899818fa 100644 --- a/mobile-apps/staff-app/ios/Runner.xcodeproj/project.pbxproj +++ b/mobile-apps/staff-app/ios/Runner.xcodeproj/project.pbxproj @@ -249,7 +249,7 @@ 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 924B93AB74D97EF4B42824EC /* [CP] Embed Pods Frameworks */, 8A3E049698DB74713226DAC2 /* [CP] Copy Pods Resources */, - 9FB2BFDDFD4635E632456623 /* FlutterFire: "flutterfire bundle-service-file" */, + 2D4EFA6B14F5C6291F0C6FED /* FlutterFire: "flutterfire bundle-service-file" */, ); buildRules = ( ); @@ -322,6 +322,24 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 2D4EFA6B14F5C6291F0C6FED /* FlutterFire: "flutterfire bundle-service-file" */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "FlutterFire: \"flutterfire bundle-service-file\""; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\n#!/bin/bash\nPATH=\"${PATH}:$FLUTTER_ROOT/bin:${PUB_CACHE}/bin:$HOME/.pub-cache/bin\"\nflutterfire bundle-service-file --plist-destination=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app\" --build-configuration=${CONFIGURATION} --platform=ios --apple-project-path=\"${SRCROOT}\"\n"; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -457,24 +475,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n"; }; - 9FB2BFDDFD4635E632456623 /* FlutterFire: "flutterfire bundle-service-file" */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "FlutterFire: \"flutterfire bundle-service-file\""; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\n#!/bin/bash\nPATH=\"${PATH}:$FLUTTER_ROOT/bin:${PUB_CACHE}/bin:$HOME/.pub-cache/bin\"\nflutterfire bundle-service-file --plist-destination=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app\" --build-configuration=${CONFIGURATION} --platform=ios --apple-project-path=\"${SRCROOT}\"\n"; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ diff --git a/mobile-apps/staff-app/ios/flavors/staging/GoogleService-Info.plist b/mobile-apps/staff-app/ios/flavors/staging/GoogleService-Info.plist index 2b6ef199..871efc94 100644 --- a/mobile-apps/staff-app/ios/flavors/staging/GoogleService-Info.plist +++ b/mobile-apps/staff-app/ios/flavors/staging/GoogleService-Info.plist @@ -9,7 +9,7 @@ PLIST_VERSION 1 BUNDLE_ID - com.krow.app.staging + com.krow.app.staff.staging PROJECT_ID krow-workforce-staging STORAGE_BUCKET @@ -25,6 +25,6 @@ IS_SIGNIN_ENABLED GOOGLE_APP_ID - 1:1032971403708:ios:1d9b09307e6f3983356bb9 + 1:1032971403708:ios:134753083678e855356bb9 \ No newline at end of file diff --git a/mobile-apps/staff-app/lib/firebase_options_staging.dart b/mobile-apps/staff-app/lib/firebase_options_staging.dart index f466b9bb..8582a336 100644 --- a/mobile-apps/staff-app/lib/firebase_options_staging.dart +++ b/mobile-apps/staff-app/lib/firebase_options_staging.dart @@ -51,7 +51,7 @@ class DefaultFirebaseOptions { static const FirebaseOptions android = FirebaseOptions( apiKey: 'AIzaSyAZ4dOatvf3ZBt4qnbSlIvJ51bblHaRsRw', - appId: '1:1032971403708:android:87edb39679f806ab356bb9', + appId: '1:1032971403708:android:6e5031c203f01cc2356bb9', messagingSenderId: '1032971403708', projectId: 'krow-workforce-staging', storageBucket: 'krow-workforce-staging.firebasestorage.app', @@ -59,11 +59,11 @@ class DefaultFirebaseOptions { static const FirebaseOptions ios = FirebaseOptions( apiKey: 'AIzaSyCgTXI3QhbEK3r4J5y7ek_6AxqhmR99QjY', - appId: '1:1032971403708:ios:1d9b09307e6f3983356bb9', + appId: '1:1032971403708:ios:134753083678e855356bb9', messagingSenderId: '1032971403708', projectId: 'krow-workforce-staging', storageBucket: 'krow-workforce-staging.firebasestorage.app', - iosBundleId: 'com.krow.app.staging', + iosBundleId: 'com.krow.app.staff.staging', ); } \ No newline at end of file