feat: configure Firebase and signing for multiple environments in mobile app

This commit is contained in:
Achintha Isuru
2025-11-18 17:52:23 -05:00
parent ef35554635
commit c6ccd1e2e3
16 changed files with 443 additions and 59 deletions

View File

@@ -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 {

View File

@@ -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",