Configure app signing, update identifiers for store deployment, and localize dashboard tabs
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
import java.util.Properties
|
||||
import java.io.FileInputStream
|
||||
|
||||
plugins {
|
||||
id("com.android.application")
|
||||
id("kotlin-android")
|
||||
@@ -5,6 +8,12 @@ plugins {
|
||||
id("dev.flutter.flutter-gradle-plugin")
|
||||
}
|
||||
|
||||
val keystoreProperties = Properties()
|
||||
val keystorePropertiesFile = rootProject.file("key.properties")
|
||||
if (keystorePropertiesFile.exists()) {
|
||||
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "com.savefamily.app"
|
||||
compileSdk = flutter.compileSdkVersion
|
||||
@@ -36,9 +45,18 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
create("release") {
|
||||
keyAlias = keystoreProperties["keyAlias"] as String?
|
||||
keyPassword = keystoreProperties["keyPassword"] as String?
|
||||
storeFile = keystoreProperties["storeFile"]?.let { file(it as String) }
|
||||
storePassword = keystoreProperties["storePassword"] as String?
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
signingConfig = signingConfigs.getByName("debug")
|
||||
signingConfig = signingConfigs.getByName("release")
|
||||
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
|
||||
}
|
||||
debug {
|
||||
@@ -58,7 +76,7 @@ android {
|
||||
}
|
||||
create("staging") {
|
||||
dimension = "app"
|
||||
applicationIdSuffix = ".staging"
|
||||
applicationIdSuffix = ".stag"
|
||||
resValue("string", "app_name", "SF Staging")
|
||||
}
|
||||
create("production") {
|
||||
|
||||
@@ -76,12 +76,12 @@
|
||||
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
AA0000011234567800000002 /* AntelopRelease.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = AntelopRelease.plist; sourceTree = "<group>"; };
|
||||
AA0000011234567800000003 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
|
||||
AA4000010000000000000001 /* Info-development.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-development.plist"; sourceTree = "<group>"; };
|
||||
AA4000010000000000000002 /* Info-staging.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-staging.plist"; sourceTree = "<group>"; };
|
||||
AA5000010000000000000002 /* AntelopRelease-development.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "AntelopRelease-development.plist"; sourceTree = "<group>"; };
|
||||
AA5000010000000000000004 /* AntelopRelease-staging.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "AntelopRelease-staging.plist"; sourceTree = "<group>"; };
|
||||
AA5000010000000000000005 /* Runner-development.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Runner-development.entitlements"; sourceTree = "<group>"; };
|
||||
AA5000010000000000000006 /* Runner-staging.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Runner-staging.entitlements"; sourceTree = "<group>"; };
|
||||
AA4000010000000000000001 /* Info-development.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-development.plist"; sourceTree = "<group>"; };
|
||||
AA4000010000000000000002 /* Info-staging.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-staging.plist"; sourceTree = "<group>"; };
|
||||
AAA974F39BB17DD4221F30F5 /* Pods-RunnerTests.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-staging.xcconfig"; sourceTree = "<group>"; };
|
||||
B4AB34F476573EEFF80A6AFD /* Pods-Runner.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-staging.xcconfig"; sourceTree = "<group>"; };
|
||||
B6E39156F3210C2E3A4F7DB3 /* Pods-Runner.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-staging.xcconfig"; sourceTree = "<group>"; };
|
||||
@@ -547,7 +547,7 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "Runner/Runner-development.entitlements";
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = YC6P64GJ93;
|
||||
DEVELOPMENT_TEAM = KQ73NP6L4Q;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-development.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@@ -616,7 +616,7 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon-development;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = "AppIcon-development";
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
@@ -673,7 +673,7 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon-development;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = "AppIcon-development";
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
@@ -731,7 +731,7 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "Runner/Runner-development.entitlements";
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = YC6P64GJ93;
|
||||
DEVELOPMENT_TEAM = KQ73NP6L4Q;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-development.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@@ -755,7 +755,7 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "Runner/Runner-development.entitlements";
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = YC6P64GJ93;
|
||||
DEVELOPMENT_TEAM = KQ73NP6L4Q;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-development.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@@ -1104,14 +1104,14 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "Runner/Runner-staging.entitlements";
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = YC6P64GJ93;
|
||||
DEVELOPMENT_TEAM = KQ73NP6L4Q;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-staging.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.savefamily.app.staging;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.savefamily.app.stag;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
@@ -1128,7 +1128,7 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = YC6P64GJ93;
|
||||
DEVELOPMENT_TEAM = KQ73NP6L4Q;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@@ -1152,14 +1152,14 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "Runner/Runner-staging.entitlements";
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = YC6P64GJ93;
|
||||
DEVELOPMENT_TEAM = KQ73NP6L4Q;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-staging.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.savefamily.app.staging;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.savefamily.app.stag;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
@@ -1175,7 +1175,7 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = YC6P64GJ93;
|
||||
DEVELOPMENT_TEAM = KQ73NP6L4Q;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@@ -1198,14 +1198,14 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "Runner/Runner-staging.entitlements";
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = YC6P64GJ93;
|
||||
DEVELOPMENT_TEAM = KQ73NP6L4Q;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-staging.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.savefamily.app.staging;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.savefamily.app.stag;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
@@ -1221,7 +1221,7 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = YC6P64GJ93;
|
||||
DEVELOPMENT_TEAM = KQ73NP6L4Q;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@@ -1369,7 +1369,7 @@
|
||||
AA1000010000000000000006 /* Profile-production */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
defaultConfigurationName = "Debug-development";
|
||||
};
|
||||
97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
|
||||
isa = XCConfigurationList;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<key>fr.antelop.alertLoggingEnabled</key>
|
||||
<string>The Antelop SDK is logging.</string>
|
||||
<key>fr.antelop.applicationGroupIdentifier</key>
|
||||
<string>group.com.savefamily.app.staging</string>
|
||||
<string>group.com.savefamily.app.stag</string>
|
||||
<key>fr.antelop.initialConnectionTimeout</key>
|
||||
<integer>60</integer>
|
||||
<key>fr.antelop.application_id</key>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<key>fr.antelop.alertLoggingEnabled</key>
|
||||
<string>The Antelop SDK is logging.</string>
|
||||
<key>fr.antelop.applicationGroupIdentifier</key>
|
||||
<string>group.com.savefamily.app</string>
|
||||
<string>group.com.savefamily.app.prod</string>
|
||||
<key>fr.antelop.initialConnectionTimeout</key>
|
||||
<integer>60</integer>
|
||||
<key>fr.antelop.application_id</key>
|
||||
|
||||
@@ -49,6 +49,10 @@
|
||||
<true/>
|
||||
<key>NSCameraUsageDescription</key>
|
||||
<string>Necesitamos la cámara para escanear códigos QR</string>
|
||||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
<string>Usamos tu ubicación para verificar la seguridad de las transacciones.</string>
|
||||
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
|
||||
<string>Usamos tu ubicación para verificar la seguridad de las transacciones.</string>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
<key>NSFaceIDUsageDescription</key>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<dict>
|
||||
<key>com.apple.security.application-groups</key>
|
||||
<array>
|
||||
<string>group.com.savefamily.app.staging</string>
|
||||
<string>group.com.savefamily.app.stag</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<dict>
|
||||
<key>com.apple.security.application-groups</key>
|
||||
<array>
|
||||
<string>group.com.savefamily.app</string>
|
||||
<string>group.com.savefamily.app.prod</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:navigation/navigation.dart';
|
||||
import 'package:sf_localizations/sf_localizations.dart';
|
||||
|
||||
final mainShellViewModelProvider =
|
||||
NotifierProvider.autoDispose<MainShellViewModel, MainShellViewState>(
|
||||
@@ -36,19 +37,19 @@ class DashboardScreen extends ConsumerWidget {
|
||||
viewModel.onTabChanged(index);
|
||||
navigationShell.goBranch(index);
|
||||
},
|
||||
destinations: const [
|
||||
NavigationDestination(icon: Icon(Icons.home_outlined), label: "Home"),
|
||||
destinations: [
|
||||
NavigationDestination(icon: const Icon(Icons.home_outlined), label: context.translate(I18n.dashboardTabHome)),
|
||||
NavigationDestination(
|
||||
icon: Icon(Icons.watch_outlined),
|
||||
label: "Activity",
|
||||
icon: const Icon(Icons.watch_outlined),
|
||||
label: context.translate(I18n.dashboardTabActivity),
|
||||
),
|
||||
NavigationDestination(
|
||||
icon: Icon(Icons.notifications_outlined),
|
||||
label: "Notifications",
|
||||
icon: const Icon(Icons.notifications_outlined),
|
||||
label: context.translate(I18n.dashboardTabNotifications),
|
||||
),
|
||||
NavigationDestination(
|
||||
icon: Icon(Icons.person_outline_outlined),
|
||||
label: "Profile",
|
||||
icon: const Icon(Icons.person_outline_outlined),
|
||||
label: context.translate(I18n.dashboardTabProfile),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -23,6 +23,8 @@ dependencies:
|
||||
#packages dependencies go here
|
||||
design_system:
|
||||
path: ../../packages/design_system
|
||||
sf_localizations:
|
||||
path: ../../packages/sf_localizations
|
||||
|
||||
#dependencies go here
|
||||
navigation: ^0.0.1
|
||||
|
||||
@@ -458,5 +458,10 @@
|
||||
"profileSettingsLogout": "Abmelden",
|
||||
"profileSettingsLogoutConfirm": "Sind Sie sicher, dass Sie sich abmelden möchten?",
|
||||
"profileSettingsLogoutError": "Fehler beim Abmelden",
|
||||
"profileSettingsSave": "Änderungen speichern"
|
||||
"profileSettingsSave": "Änderungen speichern",
|
||||
|
||||
"dashboardTabHome": "Startseite",
|
||||
"dashboardTabActivity": "Aktivität",
|
||||
"dashboardTabNotifications": "Benachrichtigungen",
|
||||
"dashboardTabProfile": "Profil"
|
||||
}
|
||||
@@ -458,5 +458,9 @@
|
||||
"profileSettingsLogout": "Log out",
|
||||
"profileSettingsLogoutConfirm": "Are you sure you want to log out?",
|
||||
"profileSettingsLogoutError": "Error logging out",
|
||||
"profileSettingsSave": "Save changes"
|
||||
"profileSettingsSave": "Save changes",
|
||||
"dashboardTabHome": "Home",
|
||||
"dashboardTabActivity": "Activity",
|
||||
"dashboardTabNotifications": "Notifications",
|
||||
"dashboardTabProfile": "Profile"
|
||||
}
|
||||
@@ -458,5 +458,9 @@
|
||||
"profileSettingsLogout": "Cerrar sesión",
|
||||
"profileSettingsLogoutConfirm": "¿Estás seguro de que deseas cerrar sesión?",
|
||||
"profileSettingsLogoutError": "Error al cerrar sesión",
|
||||
"profileSettingsSave": "Guardar cambios"
|
||||
"profileSettingsSave": "Guardar cambios",
|
||||
"dashboardTabHome": "Inicio",
|
||||
"dashboardTabActivity": "Actividad",
|
||||
"dashboardTabNotifications": "Notificaciones",
|
||||
"dashboardTabProfile": "Perfil"
|
||||
}
|
||||
@@ -458,5 +458,10 @@
|
||||
"profileSettingsLogout": "Se déconnecter",
|
||||
"profileSettingsLogoutConfirm": "Êtes-vous sûr de vouloir vous déconnecter ?",
|
||||
"profileSettingsLogoutError": "Erreur lors de la déconnexion",
|
||||
"profileSettingsSave": "Enregistrer les modifications"
|
||||
"profileSettingsSave": "Enregistrer les modifications",
|
||||
|
||||
"dashboardTabHome": "Accueil",
|
||||
"dashboardTabActivity": "Activité",
|
||||
"dashboardTabNotifications": "Notifications",
|
||||
"dashboardTabProfile": "Profil"
|
||||
}
|
||||
@@ -458,5 +458,10 @@
|
||||
"profileSettingsLogout": "Esci",
|
||||
"profileSettingsLogoutConfirm": "Sei sicuro di voler uscire?",
|
||||
"profileSettingsLogoutError": "Errore durante la disconnessione",
|
||||
"profileSettingsSave": "Salva modifiche"
|
||||
"profileSettingsSave": "Salva modifiche",
|
||||
|
||||
"dashboardTabHome": "Home",
|
||||
"dashboardTabActivity": "Attività",
|
||||
"dashboardTabNotifications": "Notifiche",
|
||||
"dashboardTabProfile": "Profilo"
|
||||
}
|
||||
@@ -458,5 +458,10 @@
|
||||
"profileSettingsLogout": "Terminar sessão",
|
||||
"profileSettingsLogoutConfirm": "Tem a certeza de que deseja terminar sessão?",
|
||||
"profileSettingsLogoutError": "Erro ao terminar sessão",
|
||||
"profileSettingsSave": "Guardar alterações"
|
||||
"profileSettingsSave": "Guardar alterações",
|
||||
|
||||
"dashboardTabHome": "Início",
|
||||
"dashboardTabActivity": "Atividade",
|
||||
"dashboardTabNotifications": "Notificações",
|
||||
"dashboardTabProfile": "Perfil"
|
||||
}
|
||||
@@ -520,4 +520,10 @@ class I18n {
|
||||
static const String payinSuccess = 'payinSuccess';
|
||||
static const String payinError = 'payinError';
|
||||
static const String payinProcessing = 'payinProcessing';
|
||||
|
||||
// Dashboard Tabs
|
||||
static const String dashboardTabHome = 'dashboardTabHome';
|
||||
static const String dashboardTabActivity = 'dashboardTabActivity';
|
||||
static const String dashboardTabNotifications = 'dashboardTabNotifications';
|
||||
static const String dashboardTabProfile = 'dashboardTabProfile';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user