From 621a9bf0d5220702e03e1eff74cb8068d53f319b Mon Sep 17 00:00:00 2001 From: Johannes Vedder Date: Thu, 4 Dec 2025 12:13:56 +0100 Subject: [PATCH 01/14] fix: Introduce build flavors for development, staging, and production environments across platforms and CI/CD. --- .github/workflows/deploy-apps.yml | 144 ++- app/android/.gitignore | 2 + app/android/app/build.gradle.kts | 29 +- app/android/app/src/main/AndroidManifest.xml | 2 +- app/ios/Podfile | 9 + app/ios/Podfile.lock | 2 +- app/ios/Runner.xcodeproj/project.pbxproj | 993 ++++++++++++++++++ .../xcschemes/development.xcscheme | 80 ++ .../xcschemes/production.xcscheme | 80 ++ .../xcshareddata/xcschemes/staging.xcscheme | 80 ++ app/ios/Runner/Info.plist | 150 ++- app/lib/l10n/app_localizations_de.dart | 1 - app/pubspec.yaml | 2 + devtools_options.yaml | 3 + flutter_common/lib/src/utils/env_loader.dart | 11 +- 15 files changed, 1450 insertions(+), 138 deletions(-) create mode 100644 app/ios/Runner.xcodeproj/xcshareddata/xcschemes/development.xcscheme create mode 100644 app/ios/Runner.xcodeproj/xcshareddata/xcschemes/production.xcscheme create mode 100644 app/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme create mode 100644 devtools_options.yaml diff --git a/.github/workflows/deploy-apps.yml b/.github/workflows/deploy-apps.yml index 71a2d7694..539ebf340 100644 --- a/.github/workflows/deploy-apps.yml +++ b/.github/workflows/deploy-apps.yml @@ -14,13 +14,14 @@ on: workflow_dispatch: inputs: environment: - description: 'Build Environment' + description: 'Environment to deploy' required: true - default: 'dev' + default: 'development' type: choice options: - - dev - - prod + - development + - staging + - production env: MELOS_SDK_PATH: 'auto' @@ -39,26 +40,6 @@ jobs: with: fetch-depth: 0 - # NEW: Determine if this is a Prod build based on Branch OR Input - - name: Setup Build Environment Logic - id: env-check - run: | - # Default to false - IS_PROD=false - - # Check Workflow Dispatch Input - if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then - if [[ "${{ inputs.environment }}" == "prod" ]]; then - IS_PROD=true - fi - # Check Branch Logic (Push event) - elif [[ "${{ github.ref }}" == "refs/heads/main" || "${{ github.ref }}" == "refs/heads/staging" ]]; then - IS_PROD=true - fi - - echo "IS_PROD=$IS_PROD" >> $GITHUB_ENV - echo "Build environment is Prod: $IS_PROD" - - name: Init workspace uses: ./.github/workflows/init-workspace @@ -75,7 +56,8 @@ jobs: distribution: temurin - name: Bundle install for Android Gemfile - run: bundle install + run: | + bundle install timeout-minutes: 5 working-directory: ./app/android @@ -85,6 +67,40 @@ jobs: # todo cache: false + - name: Determine build environment + id: build-env + run: | + # Determine environment based on branch or manual input + if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + ENVIRONMENT="${{ github.event.inputs.environment }}" + elif [ "${{ github.ref }}" == "refs/heads/main" ]; then + ENVIRONMENT="production" + else + # dev branch defaults to development + ENVIRONMENT="development" + fi + + echo "ENVIRONMENT=$ENVIRONMENT" >> $GITHUB_ENV + + # Set build parameters based on environment + case $ENVIRONMENT in + production) + echo "FLAVOR=production" >> $GITHUB_ENV + echo "SCHEME=production" >> $GITHUB_ENV + ;; + staging) + echo "FLAVOR=staging" >> $GITHUB_ENV + echo "SCHEME=staging" >> $GITHUB_ENV + ;; + development) + echo "FLAVOR=development" >> $GITHUB_ENV + echo "SCHEME=development" >> $GITHUB_ENV + ;; + esac + + echo "Building for environment: $ENVIRONMENT" + echo "Flavor/Scheme: $FLAVOR" + - name: Prepare upload key run: | echo "$STUDYU_ANDROID_KEYSTORE_BASE64" | base64 --decode > app/keystore.jks @@ -94,14 +110,12 @@ jobs: STUDYU_ANDROID_KEYSTORE_BASE64: ${{ secrets.STUDYU_ANDROID_KEYSTORE_BASE64 }} STUDYU_KEY_PROPERTIES: ${{ secrets.STUDYU_KEY_PROPERTIES }} - - name: Build StudyU app bundle (prod) - if: ${{ env.IS_PROD == 'true' }} - run: flutter build appbundle --release --build-number ${{ github.run_number }} - working-directory: ./app - - - name: Build StudyU app bundle (dev) - if: ${{ env.IS_PROD == 'false' }} - run: flutter build appbundle --release --build-number ${{ github.run_number }} --dart-define=STUDYU_ENV=.env.dev + - name: Build StudyU app bundle + run: | + flutter build appbundle \ + --release \ + --flavor ${{ env.FLAVOR }} \ + --build-number ${{ github.run_number }} working-directory: ./app - name: Fastlane upload @@ -125,20 +139,6 @@ jobs: with: fetch-depth: 0 - # NEW: Determine if this is a Prod build based on Branch OR Input - - name: Setup Build Environment Logic - id: env-check - run: | - IS_PROD=false - if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then - if [[ "${{ inputs.environment }}" == "prod" ]]; then - IS_PROD=true - fi - elif [[ "${{ github.ref }}" == "refs/heads/main" || "${{ github.ref }}" == "refs/heads/staging" ]]; then - IS_PROD=true - fi - echo "IS_PROD=$IS_PROD" >> $GITHUB_ENV - - name: Init workspace uses: ./.github/workflows/init-workspace @@ -150,7 +150,8 @@ jobs: bundler-cache: false - name: Bundle install for iOS Gemfile - run: bundle install + run: | + bundle install timeout-minutes: 5 working-directory: ./app/ios @@ -160,6 +161,37 @@ jobs: # todo cache: false + - name: Determine build environment and scheme + id: build-env + run: | + # Determine environment based on branch or manual input + if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + ENVIRONMENT="${{ github.event.inputs.environment }}" + elif [ "${{ github.ref }}" == "refs/heads/main" ]; then + ENVIRONMENT="production" + else + # dev branch defaults to development + ENVIRONMENT="development" + fi + + echo "ENVIRONMENT=$ENVIRONMENT" >> $GITHUB_ENV + + # Set build parameters based on environment + case $ENVIRONMENT in + production) + echo "SCHEME=production" >> $GITHUB_ENV + ;; + staging) + echo "SCHEME=staging" >> $GITHUB_ENV + ;; + development) + echo "SCHEME=development" >> $GITHUB_ENV + ;; + esac + + echo "Building for environment: $ENVIRONMENT" + echo "Scheme: $SCHEME" + - name: Get StudyU app version run: | # Read the version of study_app from pubspec.yaml and make it CFBundleShortVersionString compatible @@ -177,14 +209,14 @@ jobs: fi working-directory: ./app - - name: Build StudyU for iOS without codesign (prod) - if: ${{ env.IS_PROD == 'true' }} - run: flutter build ios --release --no-codesign --build-number ${{ github.run_number }} --build-name ${{ env.STUDYU_APP_VERSION }} - working-directory: ./app - - - name: Build StudyU for iOS without codesign (dev) - if: ${{ env.IS_PROD == 'false' }} - run: flutter build ios --release --no-codesign --build-number ${{ github.run_number }} --build-name ${{ env.STUDYU_APP_VERSION }} --dart-define=STUDYU_ENV=.env.dev + - name: Build StudyU for iOS without codesign + run: | + flutter build ios \ + --release \ + --no-codesign \ + --build-number ${{ github.run_number }} \ + --build-name ${{ env.STUDYU_APP_VERSION }} \ + --flavor ${{ env.SCHEME }} working-directory: ./app - name: Fastlane upload diff --git a/app/android/.gitignore b/app/android/.gitignore index be3943c96..3a1e07d8f 100644 --- a/app/android/.gitignore +++ b/app/android/.gitignore @@ -12,3 +12,5 @@ GeneratedPluginRegistrant.java key.properties **/*.keystore **/*.jks + +.kotlin/ diff --git a/app/android/app/build.gradle.kts b/app/android/app/build.gradle.kts index 15d7a5705..142ae74f5 100644 --- a/app/android/app/build.gradle.kts +++ b/app/android/app/build.gradle.kts @@ -5,8 +5,7 @@ plugins { id("dev.flutter.flutter-gradle-plugin") } -import java . util . Properties - import java . io . FileInputStream +import java.util.Properties val localProperties = Properties() val localPropertiesFile = rootProject.file("local.properties") @@ -85,6 +84,32 @@ android { else signingConfigs.getByName("debug") } } + flavorDimensions += "env" + productFlavors { + create("production") { + dimension = "env" + resValue( + type = "string", + name = "app_name", + value = "StudyU") + } + create("staging") { + dimension = "env" + resValue( + type = "string", + name = "app_name", + value = "StudyU Staging") + applicationIdSuffix = ".staging" + } + create("development") { + dimension = "env" + resValue( + type = "string", + name = "app_name", + value = "StudyU Dev") + applicationIdSuffix = ".dev" + } + } } flutter { diff --git a/app/android/app/src/main/AndroidManifest.xml b/app/android/app/src/main/AndroidManifest.xml index 201bde8d1..de99e11e8 100644 --- a/app/android/app/src/main/AndroidManifest.xml +++ b/app/android/app/src/main/AndroidManifest.xml @@ -30,7 +30,7 @@ + android:label="@string/app_name"> :debug, + 'Debug-development' => :debug, + 'Debug-staging' => :debug, + 'Debug-production' => :debug, 'Profile' => :release, + 'Profile-development' => :release, + 'Profile-staging' => :release, + 'Profile-production' => :release, 'Release' => :release, + 'Release-development' => :release, + 'Release-staging' => :release, + 'Release-production' => :release, } def flutter_root diff --git a/app/ios/Podfile.lock b/app/ios/Podfile.lock index b0e733c61..28ab1100b 100644 --- a/app/ios/Podfile.lock +++ b/app/ios/Podfile.lock @@ -157,6 +157,6 @@ SPEC CHECKSUMS: wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556 webview_flutter_wkwebview: 8ebf4fded22593026f7dbff1fbff31ea98573c8d -PODFILE CHECKSUM: b00a565d52284bcdd04d643f399531a35b02c2c4 +PODFILE CHECKSUM: 5e5e76374e861509ef3854ccfec98848a63e415b COCOAPODS: 1.16.2 diff --git a/app/ios/Runner.xcodeproj/project.pbxproj b/app/ios/Runner.xcodeproj/project.pbxproj index 504f98759..40f90303d 100644 --- a/app/ios/Runner.xcodeproj/project.pbxproj +++ b/app/ios/Runner.xcodeproj/project.pbxproj @@ -43,19 +43,32 @@ /* Begin PBXFileReference section */ 108C3CBFBA5E223FA0E7AA40 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 123DC1F0EA24762A756F3C4E /* Pods-Runner.debug-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-development.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 1A60DD22ED3AFBBE1E08DA06 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 1FD9B53758CBD493BF68BBB7 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 249BAEA2FFD95C01E94DE24D /* 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 = ""; }; 2785F6F0CD9FB49AD9AED021 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 36D08432195C6A9424D1BB5A /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 4008E2E2FAA8B15105AB138E /* Pods-RunnerTests.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-staging.xcconfig"; sourceTree = ""; }; + 49735E54415AC9D31DE3F31C /* Pods-Runner.debug-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-production.xcconfig"; sourceTree = ""; }; 4E6A3C226064B1DE9E46EEED /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 537F1CEC20B58263FF1AD4E4 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 56772D656CE8B8985334389B /* Pods-RunnerTests.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-staging.xcconfig"; sourceTree = ""; }; + 599BC1B5E00E5BCCCE46CAF7 /* Pods-RunnerTests.debug-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-production.xcconfig"; sourceTree = ""; }; + 5E3DCA6C2906ED351D338ADA /* 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 = ""; }; + 5E60BBB09F29C09021157B14 /* Pods-RunnerTests.release-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-development.xcconfig"; sourceTree = ""; }; + 6AD53F7ED92F0560CF8F1BC5 /* Pods-Runner.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-staging.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 74D03CBFC29F4FD09A6B1109 /* Pods-Runner.release-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-development.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 7F10C650534E1E85C9A2D182 /* Pods-Runner.release-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-production.xcconfig"; sourceTree = ""; }; + 9108456B5B2EF5D492E1644D /* Pods-RunnerTests.profile-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-production.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -64,7 +77,12 @@ 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 9E18ED3E2D85AE1500B4ABDF /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; + B4FF8F44555B483921953D3C /* Pods-RunnerTests.release-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-production.xcconfig"; sourceTree = ""; }; + C5405C2CEA49F45951051E2C /* Pods-RunnerTests.debug-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-development.xcconfig"; sourceTree = ""; }; + C95105B27FD1BDB934680D51 /* Pods-Runner.profile-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-development.xcconfig"; sourceTree = ""; }; DDAA3A5DACA469DBF5FA2E29 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + EC93C4141D44E67BB65BEEF5 /* Pods-RunnerTests.profile-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-development.xcconfig"; sourceTree = ""; }; + EEBAF046C540C6CDC33B3F25 /* Pods-Runner.profile-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-production.xcconfig"; sourceTree = ""; }; FD123F2BE6B3D52ECD5C0A64 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -105,6 +123,24 @@ 1FD9B53758CBD493BF68BBB7 /* Pods-RunnerTests.debug.xcconfig */, 1A60DD22ED3AFBBE1E08DA06 /* Pods-RunnerTests.release.xcconfig */, 4E6A3C226064B1DE9E46EEED /* Pods-RunnerTests.profile.xcconfig */, + 49735E54415AC9D31DE3F31C /* Pods-Runner.debug-production.xcconfig */, + 6AD53F7ED92F0560CF8F1BC5 /* Pods-Runner.debug-staging.xcconfig */, + 123DC1F0EA24762A756F3C4E /* Pods-Runner.debug-development.xcconfig */, + 7F10C650534E1E85C9A2D182 /* Pods-Runner.release-production.xcconfig */, + 249BAEA2FFD95C01E94DE24D /* Pods-Runner.release-staging.xcconfig */, + 74D03CBFC29F4FD09A6B1109 /* Pods-Runner.release-development.xcconfig */, + EEBAF046C540C6CDC33B3F25 /* Pods-Runner.profile-production.xcconfig */, + 36D08432195C6A9424D1BB5A /* Pods-Runner.profile-staging.xcconfig */, + C95105B27FD1BDB934680D51 /* Pods-Runner.profile-development.xcconfig */, + 599BC1B5E00E5BCCCE46CAF7 /* Pods-RunnerTests.debug-production.xcconfig */, + 5E3DCA6C2906ED351D338ADA /* Pods-RunnerTests.debug-staging.xcconfig */, + C5405C2CEA49F45951051E2C /* Pods-RunnerTests.debug-development.xcconfig */, + B4FF8F44555B483921953D3C /* Pods-RunnerTests.release-production.xcconfig */, + 56772D656CE8B8985334389B /* Pods-RunnerTests.release-staging.xcconfig */, + 5E60BBB09F29C09021157B14 /* Pods-RunnerTests.release-development.xcconfig */, + 9108456B5B2EF5D492E1644D /* Pods-RunnerTests.profile-production.xcconfig */, + 4008E2E2FAA8B15105AB138E /* Pods-RunnerTests.profile-staging.xcconfig */, + EC93C4141D44E67BB65BEEF5 /* Pods-RunnerTests.profile-development.xcconfig */, ); path = Pods; sourceTree = ""; @@ -488,6 +524,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { + APP_DISPLAY_NAME = ""; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; @@ -681,6 +718,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { + APP_DISPLAY_NAME = ""; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; @@ -711,6 +749,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { + APP_DISPLAY_NAME = ""; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; @@ -737,6 +776,933 @@ }; name = Release; }; + DF570B0B2EDDD435000F0F09 /* Debug-development */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = "Debug-development"; + }; + DF570B0C2EDDD435000F0F09 /* Debug-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = "StudyU Dev"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = PG566C9XUK; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.dev; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore health.studyu.app"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Debug-development"; + }; + DF570B0D2EDDD435000F0F09 /* Debug-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C5405C2CEA49F45951051E2C /* Pods-RunnerTests.debug-development.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Debug-development"; + }; + DF570B0E2EDDD442000F0F09 /* Debug-staging */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = "Debug-staging"; + }; + DF570B0F2EDDD442000F0F09 /* Debug-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = "StudyU Staging"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = PG566C9XUK; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.staging; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore health.studyu.app"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Debug-staging"; + }; + DF570B102EDDD442000F0F09 /* Debug-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5E3DCA6C2906ED351D338ADA /* Pods-RunnerTests.debug-staging.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Debug-staging"; + }; + DF570B112EDDD44A000F0F09 /* Debug-production */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = "Debug-production"; + }; + DF570B122EDDD44A000F0F09 /* Debug-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = "StudyU"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = PG566C9XUK; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore health.studyu.app"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Debug-production"; + }; + DF570B132EDDD44A000F0F09 /* Debug-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 599BC1B5E00E5BCCCE46CAF7 /* Pods-RunnerTests.debug-production.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Debug-production"; + }; + DF570B142EDDD454000F0F09 /* Release-development */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Release-development"; + }; + DF570B152EDDD454000F0F09 /* Release-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = "StudyU Dev"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = PG566C9XUK; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.dev; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore health.studyu.app"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release-development"; + }; + DF570B162EDDD454000F0F09 /* Release-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5E60BBB09F29C09021157B14 /* Pods-RunnerTests.release-development.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Release-development"; + }; + DF570B172EDDD468000F0F09 /* Release-staging */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Release-staging"; + }; + DF570B182EDDD468000F0F09 /* Release-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = "StudyU Staging"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = PG566C9XUK; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.staging; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore health.studyu.app"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release-staging"; + }; + DF570B192EDDD468000F0F09 /* Release-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 56772D656CE8B8985334389B /* Pods-RunnerTests.release-staging.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Release-staging"; + }; + DF570B1A2EDDD46E000F0F09 /* Release-production */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Release-production"; + }; + DF570B1B2EDDD46E000F0F09 /* Release-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = "StudyU"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = PG566C9XUK; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore health.studyu.app"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release-production"; + }; + DF570B1C2EDDD46E000F0F09 /* Release-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B4FF8F44555B483921953D3C /* Pods-RunnerTests.release-production.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Release-production"; + }; + DF570B1D2EDDD8A3000F0F09 /* Profile-development */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-development"; + }; + DF570B1E2EDDD8A3000F0F09 /* Profile-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = "StudyU Dev"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = PG566C9XUK; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.dev; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore health.studyu.app"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Profile-development"; + }; + DF570B1F2EDDD8A3000F0F09 /* Profile-development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EC93C4141D44E67BB65BEEF5 /* Pods-RunnerTests.profile-development.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Profile-development"; + }; + DF570B202EDDD8AB000F0F09 /* Profile-staging */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-staging"; + }; + DF570B212EDDD8AB000F0F09 /* Profile-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = "StudyU Staging"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = PG566C9XUK; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.staging; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore health.studyu.app"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Profile-staging"; + }; + DF570B222EDDD8AB000F0F09 /* Profile-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4008E2E2FAA8B15105AB138E /* Pods-RunnerTests.profile-staging.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Profile-staging"; + }; + DF570B232EDDD8B1000F0F09 /* Profile-production */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-production"; + }; + DF570B242EDDD8B1000F0F09 /* Profile-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = "StudyU"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = PG566C9XUK; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore health.studyu.app"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Profile-production"; + }; + DF570B252EDDD8B1000F0F09 /* Profile-production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9108456B5B2EF5D492E1644D /* Pods-RunnerTests.profile-production.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Profile-production"; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -744,8 +1710,17 @@ isa = XCConfigurationList; buildConfigurations = ( 331C8088294A63A400263BE5 /* Debug */, + DF570B132EDDD44A000F0F09 /* Debug-production */, + DF570B102EDDD442000F0F09 /* Debug-staging */, + DF570B0D2EDDD435000F0F09 /* Debug-development */, 331C8089294A63A400263BE5 /* Release */, + DF570B1C2EDDD46E000F0F09 /* Release-production */, + DF570B192EDDD468000F0F09 /* Release-staging */, + DF570B162EDDD454000F0F09 /* Release-development */, 331C808A294A63A400263BE5 /* Profile */, + DF570B252EDDD8B1000F0F09 /* Profile-production */, + DF570B222EDDD8AB000F0F09 /* Profile-staging */, + DF570B1F2EDDD8A3000F0F09 /* Profile-development */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -754,8 +1729,17 @@ isa = XCConfigurationList; buildConfigurations = ( 97C147031CF9000F007C117D /* Debug */, + DF570B112EDDD44A000F0F09 /* Debug-production */, + DF570B0E2EDDD442000F0F09 /* Debug-staging */, + DF570B0B2EDDD435000F0F09 /* Debug-development */, 97C147041CF9000F007C117D /* Release */, + DF570B1A2EDDD46E000F0F09 /* Release-production */, + DF570B172EDDD468000F0F09 /* Release-staging */, + DF570B142EDDD454000F0F09 /* Release-development */, 249021D3217E4FDB00AE95B9 /* Profile */, + DF570B232EDDD8B1000F0F09 /* Profile-production */, + DF570B202EDDD8AB000F0F09 /* Profile-staging */, + DF570B1D2EDDD8A3000F0F09 /* Profile-development */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -764,8 +1748,17 @@ isa = XCConfigurationList; buildConfigurations = ( 97C147061CF9000F007C117D /* Debug */, + DF570B122EDDD44A000F0F09 /* Debug-production */, + DF570B0F2EDDD442000F0F09 /* Debug-staging */, + DF570B0C2EDDD435000F0F09 /* Debug-development */, 97C147071CF9000F007C117D /* Release */, + DF570B1B2EDDD46E000F0F09 /* Release-production */, + DF570B182EDDD468000F0F09 /* Release-staging */, + DF570B152EDDD454000F0F09 /* Release-development */, 249021D4217E4FDB00AE95B9 /* Profile */, + DF570B242EDDD8B1000F0F09 /* Profile-production */, + DF570B212EDDD8AB000F0F09 /* Profile-staging */, + DF570B1E2EDDD8A3000F0F09 /* Profile-development */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/development.xcscheme b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/development.xcscheme new file mode 100644 index 000000000..c537382db --- /dev/null +++ b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/development.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/production.xcscheme b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/production.xcscheme new file mode 100644 index 000000000..d60fec597 --- /dev/null +++ b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/production.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme new file mode 100644 index 000000000..074331543 --- /dev/null +++ b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/ios/Runner/Info.plist b/app/ios/Runner/Info.plist index 33e4ee169..109137bd3 100644 --- a/app/ios/Runner/Info.plist +++ b/app/ios/Runner/Info.plist @@ -1,83 +1,81 @@ + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + $(APP_DISPLAY_NAME) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLocalizations + + en + de + + CFBundleName + StudyU + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + ITSAppUsesNonExemptEncryption + + LSApplicationQueriesSchemes + + https + http + + LSRequiresIPhoneOS + + LSSupportsOpeningDocumentsInPlace + + NSAppTransportSecurity - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - StudyU - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleLocalizations - - en - de - - CFBundleName - StudyU - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - ITSAppUsesNonExemptEncryption - - LSApplicationQueriesSchemes - - https - http - - LSRequiresIPhoneOS + NSAllowsArbitraryLoads - LSSupportsOpeningDocumentsInPlace - - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - NSCameraUsageDescription - Need to access your camera to capture a photo for trial observations. - UIApplicationSupportsIndirectInputEvents - - UIBackgroundModes - - fetch - remote-notification - - UIFileSharingEnabled - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - - UIStatusBarHidden - - UIViewControllerBasedStatusBarAppearance - + NSCameraUsageDescription + Need to access your camera to capture a photo for trial observations. + UIApplicationSupportsIndirectInputEvents + + UIBackgroundModes + + fetch + remote-notification + + UIFileSharingEnabled + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIStatusBarHidden + + UIViewControllerBasedStatusBarAppearance + + diff --git a/app/lib/l10n/app_localizations_de.dart b/app/lib/l10n/app_localizations_de.dart index 831fe10f7..224338f8d 100644 --- a/app/lib/l10n/app_localizations_de.dart +++ b/app/lib/l10n/app_localizations_de.dart @@ -1,6 +1,5 @@ // ignore: unused_import import 'package:intl/intl.dart' as intl; - import 'app_localizations.dart'; // ignore_for_file: type=lint diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 34eba1db4..0b754cf01 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -5,6 +5,8 @@ publish_to: none homepage: https://studyu.health repository: https://github.com/hpi-studyu/studyu +default-flavor: production + environment: sdk: ">=3.8.0 <4.0.0" resolution: workspace diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 000000000..fa0b357c4 --- /dev/null +++ b/devtools_options.yaml @@ -0,0 +1,3 @@ +description: This file stores settings for Dart & Flutter DevTools. +documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states +extensions: diff --git a/flutter_common/lib/src/utils/env_loader.dart b/flutter_common/lib/src/utils/env_loader.dart index 0226b6fdc..34563b8ca 100644 --- a/flutter_common/lib/src/utils/env_loader.dart +++ b/flutter_common/lib/src/utils/env_loader.dart @@ -11,7 +11,16 @@ const envsAssetPath = 'packages/studyu_flutter_common/lib/envs'; // load env from envs/.env or from the filename specified in the STUDYU_ENV runtime-variable String envFilePath() { const env = String.fromEnvironment('STUDYU_ENV'); - return env.isNotEmpty ? '$envsAssetPath/$env' : '$envsAssetPath/.env'; + if (env.isNotEmpty) { + return '$envsAssetPath/$env'; + } + + const flavor = String.fromEnvironment('FLUTTER_APP_FLAVOR'); + if (flavor == 'development') { + return '$envsAssetPath/.env.dev'; + } + + return '$envsAssetPath/.env'; } String? getEnv(String name, {bool optional = false}) { From 0d3ba1cb6f5a6abd4380c4c902e2dea62b944af0 Mon Sep 17 00:00:00 2001 From: Johannes Vedder Date: Thu, 4 Dec 2025 13:20:19 +0100 Subject: [PATCH 02/14] chore: Add scheme parameter to build_app using ENV['SCHEME'] --- app/ios/fastlane/Fastfile | 1 + 1 file changed, 1 insertion(+) diff --git a/app/ios/fastlane/Fastfile b/app/ios/fastlane/Fastfile index 854f0d64d..36e1d3c84 100644 --- a/app/ios/fastlane/Fastfile +++ b/app/ios/fastlane/Fastfile @@ -57,6 +57,7 @@ platform :ios do ) build_app( + scheme: ENV['SCHEME'], export_method: "app-store", ) From d46a4d0430021a2c7d3e5f006890ba728f8c3b39 Mon Sep 17 00:00:00 2001 From: Johannes Vedder Date: Thu, 4 Dec 2025 13:23:03 +0100 Subject: [PATCH 03/14] fix: dynamically determine AAB path using FLAVOR environment variable for internal deployment. --- app/android/fastlane/Fastfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/android/fastlane/Fastfile b/app/android/fastlane/Fastfile index 47b1b25b3..5031ccc6f 100644 --- a/app/android/fastlane/Fastfile +++ b/app/android/fastlane/Fastfile @@ -18,9 +18,10 @@ default_platform(:android) platform :android do desc "Deploy a new version to Google Play" lane :deploy_internal do + flavor = ENV['FLAVOR'] upload_to_play_store( track: 'internal', - aab: '../build/app/outputs/bundle/release/app-release.aab', + aab: "../build/app/outputs/bundle/#{flavor}Release/app-#{flavor}-release.aab", ) end end From 07eb10dc30883eca7ff388e04fa59eb8a7d13586 Mon Sep 17 00:00:00 2001 From: Johannes Vedder Date: Thu, 4 Dec 2025 14:11:10 +0100 Subject: [PATCH 04/14] refactor: Shorten iOS build configuration environment names to abbreviations. --- .github/workflows/deploy-apps.yml | 51 ++-- app/android/app/build.gradle.kts | 8 +- app/ios/Podfile | 18 +- app/ios/Podfile.lock | 2 +- app/ios/Runner.xcodeproj/project.pbxproj | 264 +++++++++--------- .../{production.xcscheme => dev.xcscheme} | 36 ++- .../{staging.xcscheme => prod.xcscheme} | 36 ++- .../{development.xcscheme => stg.xcscheme} | 32 ++- 8 files changed, 251 insertions(+), 196 deletions(-) rename app/ios/Runner.xcodeproj/xcshareddata/xcschemes/{production.xcscheme => dev.xcscheme} (71%) rename app/ios/Runner.xcodeproj/xcshareddata/xcschemes/{staging.xcscheme => prod.xcscheme} (70%) rename app/ios/Runner.xcodeproj/xcshareddata/xcschemes/{development.xcscheme => stg.xcscheme} (73%) diff --git a/.github/workflows/deploy-apps.yml b/.github/workflows/deploy-apps.yml index 539ebf340..31f316c59 100644 --- a/.github/workflows/deploy-apps.yml +++ b/.github/workflows/deploy-apps.yml @@ -16,12 +16,12 @@ on: environment: description: 'Environment to deploy' required: true - default: 'development' + default: 'dev' type: choice options: - - development - - staging - - production + - dev + - stg + - prod env: MELOS_SDK_PATH: 'auto' @@ -74,32 +74,31 @@ jobs: if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then ENVIRONMENT="${{ github.event.inputs.environment }}" elif [ "${{ github.ref }}" == "refs/heads/main" ]; then - ENVIRONMENT="production" + ENVIRONMENT="prod" else - # dev branch defaults to development - ENVIRONMENT="development" + ENVIRONMENT="prod" + else + # dev branch defaults to dev + ENVIRONMENT="dev" fi echo "ENVIRONMENT=$ENVIRONMENT" >> $GITHUB_ENV # Set build parameters based on environment case $ENVIRONMENT in - production) - echo "FLAVOR=production" >> $GITHUB_ENV - echo "SCHEME=production" >> $GITHUB_ENV + prod) + echo "FLAVOR=prod" >> $GITHUB_ENV ;; - staging) - echo "FLAVOR=staging" >> $GITHUB_ENV - echo "SCHEME=staging" >> $GITHUB_ENV + stg) + echo "FLAVOR=stg" >> $GITHUB_ENV ;; - development) - echo "FLAVOR=development" >> $GITHUB_ENV - echo "SCHEME=development" >> $GITHUB_ENV + dev) + echo "FLAVOR=dev" >> $GITHUB_ENV ;; esac echo "Building for environment: $ENVIRONMENT" - echo "Flavor/Scheme: $FLAVOR" + echo "Flavor: $FLAVOR" - name: Prepare upload key run: | @@ -168,24 +167,24 @@ jobs: if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then ENVIRONMENT="${{ github.event.inputs.environment }}" elif [ "${{ github.ref }}" == "refs/heads/main" ]; then - ENVIRONMENT="production" + ENVIRONMENT="prod" else - # dev branch defaults to development - ENVIRONMENT="development" + # dev branch defaults to dev + ENVIRONMENT="dev" fi echo "ENVIRONMENT=$ENVIRONMENT" >> $GITHUB_ENV # Set build parameters based on environment case $ENVIRONMENT in - production) - echo "SCHEME=production" >> $GITHUB_ENV + prod) + echo "SCHEME=prod" >> $GITHUB_ENV ;; - staging) - echo "SCHEME=staging" >> $GITHUB_ENV + stg) + echo "SCHEME=stg" >> $GITHUB_ENV ;; - development) - echo "SCHEME=development" >> $GITHUB_ENV + dev) + echo "SCHEME=dev" >> $GITHUB_ENV ;; esac diff --git a/app/android/app/build.gradle.kts b/app/android/app/build.gradle.kts index 142ae74f5..11dfb67c3 100644 --- a/app/android/app/build.gradle.kts +++ b/app/android/app/build.gradle.kts @@ -86,22 +86,22 @@ android { } flavorDimensions += "env" productFlavors { - create("production") { + create("prod") { dimension = "env" resValue( type = "string", name = "app_name", value = "StudyU") } - create("staging") { + create("stg") { dimension = "env" resValue( type = "string", name = "app_name", value = "StudyU Staging") - applicationIdSuffix = ".staging" + applicationIdSuffix = ".stg" } - create("development") { + create("dev") { dimension = "env" resValue( type = "string", diff --git a/app/ios/Podfile b/app/ios/Podfile index 033afc68d..d872bd0ab 100644 --- a/app/ios/Podfile +++ b/app/ios/Podfile @@ -6,17 +6,17 @@ ENV['COCOAPODS_DISABLE_STATS'] = 'true' project 'Runner', { 'Debug' => :debug, - 'Debug-development' => :debug, - 'Debug-staging' => :debug, - 'Debug-production' => :debug, + 'Debug-dev' => :debug, + 'Debug-stg' => :debug, + 'Debug-prod' => :debug, 'Profile' => :release, - 'Profile-development' => :release, - 'Profile-staging' => :release, - 'Profile-production' => :release, + 'Profile-dev' => :release, + 'Profile-stg' => :release, + 'Profile-prod' => :release, 'Release' => :release, - 'Release-development' => :release, - 'Release-staging' => :release, - 'Release-production' => :release, + 'Release-dev' => :release, + 'Release-stg' => :release, + 'Release-prod' => :release, } def flutter_root diff --git a/app/ios/Podfile.lock b/app/ios/Podfile.lock index 28ab1100b..e2e6d6b49 100644 --- a/app/ios/Podfile.lock +++ b/app/ios/Podfile.lock @@ -157,6 +157,6 @@ SPEC CHECKSUMS: wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556 webview_flutter_wkwebview: 8ebf4fded22593026f7dbff1fbff31ea98573c8d -PODFILE CHECKSUM: 5e5e76374e861509ef3854ccfec98848a63e415b +PODFILE CHECKSUM: afa422577f5dfbf31a9d9484ee7b9cf39671e855 COCOAPODS: 1.16.2 diff --git a/app/ios/Runner.xcodeproj/project.pbxproj b/app/ios/Runner.xcodeproj/project.pbxproj index 40f90303d..ad379f4b0 100644 --- a/app/ios/Runner.xcodeproj/project.pbxproj +++ b/app/ios/Runner.xcodeproj/project.pbxproj @@ -43,32 +43,32 @@ /* Begin PBXFileReference section */ 108C3CBFBA5E223FA0E7AA40 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 123DC1F0EA24762A756F3C4E /* Pods-Runner.debug-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-development.xcconfig"; sourceTree = ""; }; + 123DC1F0EA24762A756F3C4E /* Pods-Runner.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-dev.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 1A60DD22ED3AFBBE1E08DA06 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 1FD9B53758CBD493BF68BBB7 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - 249BAEA2FFD95C01E94DE24D /* 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 = ""; }; + 249BAEA2FFD95C01E94DE24D /* Pods-Runner.release-stg.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-stg.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-stg.xcconfig"; sourceTree = ""; }; 2785F6F0CD9FB49AD9AED021 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 36D08432195C6A9424D1BB5A /* 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 = ""; }; + 36D08432195C6A9424D1BB5A /* Pods-Runner.profile-stg.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-stg.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-stg.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4008E2E2FAA8B15105AB138E /* Pods-RunnerTests.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-staging.xcconfig"; sourceTree = ""; }; - 49735E54415AC9D31DE3F31C /* Pods-Runner.debug-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-production.xcconfig"; sourceTree = ""; }; + 4008E2E2FAA8B15105AB138E /* Pods-RunnerTests.profile-stg.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-stg.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-stg.xcconfig"; sourceTree = ""; }; + 49735E54415AC9D31DE3F31C /* Pods-Runner.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-prod.xcconfig"; sourceTree = ""; }; 4E6A3C226064B1DE9E46EEED /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 537F1CEC20B58263FF1AD4E4 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 56772D656CE8B8985334389B /* Pods-RunnerTests.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-staging.xcconfig"; sourceTree = ""; }; - 599BC1B5E00E5BCCCE46CAF7 /* Pods-RunnerTests.debug-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-production.xcconfig"; sourceTree = ""; }; - 5E3DCA6C2906ED351D338ADA /* 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 = ""; }; - 5E60BBB09F29C09021157B14 /* Pods-RunnerTests.release-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-development.xcconfig"; sourceTree = ""; }; - 6AD53F7ED92F0560CF8F1BC5 /* Pods-Runner.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-staging.xcconfig"; sourceTree = ""; }; + 56772D656CE8B8985334389B /* Pods-RunnerTests.release-stg.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-stg.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-stg.xcconfig"; sourceTree = ""; }; + 599BC1B5E00E5BCCCE46CAF7 /* Pods-RunnerTests.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-prod.xcconfig"; sourceTree = ""; }; + 5E3DCA6C2906ED351D338ADA /* Pods-RunnerTests.debug-stg.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-stg.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-stg.xcconfig"; sourceTree = ""; }; + 5E60BBB09F29C09021157B14 /* Pods-RunnerTests.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-dev.xcconfig"; sourceTree = ""; }; + 6AD53F7ED92F0560CF8F1BC5 /* Pods-Runner.debug-stg.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-stg.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-stg.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 74D03CBFC29F4FD09A6B1109 /* Pods-Runner.release-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-development.xcconfig"; sourceTree = ""; }; + 74D03CBFC29F4FD09A6B1109 /* Pods-Runner.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-dev.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7F10C650534E1E85C9A2D182 /* Pods-Runner.release-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-production.xcconfig"; sourceTree = ""; }; - 9108456B5B2EF5D492E1644D /* Pods-RunnerTests.profile-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-production.xcconfig"; sourceTree = ""; }; + 7F10C650534E1E85C9A2D182 /* Pods-Runner.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-prod.xcconfig"; sourceTree = ""; }; + 9108456B5B2EF5D492E1644D /* Pods-RunnerTests.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-prod.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -77,12 +77,12 @@ 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 9E18ED3E2D85AE1500B4ABDF /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; - B4FF8F44555B483921953D3C /* Pods-RunnerTests.release-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-production.xcconfig"; sourceTree = ""; }; - C5405C2CEA49F45951051E2C /* Pods-RunnerTests.debug-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-development.xcconfig"; sourceTree = ""; }; - C95105B27FD1BDB934680D51 /* Pods-Runner.profile-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-development.xcconfig"; sourceTree = ""; }; + B4FF8F44555B483921953D3C /* Pods-RunnerTests.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-prod.xcconfig"; sourceTree = ""; }; + C5405C2CEA49F45951051E2C /* Pods-RunnerTests.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-dev.xcconfig"; sourceTree = ""; }; + C95105B27FD1BDB934680D51 /* Pods-Runner.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-dev.xcconfig"; sourceTree = ""; }; DDAA3A5DACA469DBF5FA2E29 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - EC93C4141D44E67BB65BEEF5 /* Pods-RunnerTests.profile-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-development.xcconfig"; sourceTree = ""; }; - EEBAF046C540C6CDC33B3F25 /* Pods-Runner.profile-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-production.xcconfig"; sourceTree = ""; }; + EC93C4141D44E67BB65BEEF5 /* Pods-RunnerTests.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-dev.xcconfig"; sourceTree = ""; }; + EEBAF046C540C6CDC33B3F25 /* Pods-Runner.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-prod.xcconfig"; sourceTree = ""; }; FD123F2BE6B3D52ECD5C0A64 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -123,24 +123,24 @@ 1FD9B53758CBD493BF68BBB7 /* Pods-RunnerTests.debug.xcconfig */, 1A60DD22ED3AFBBE1E08DA06 /* Pods-RunnerTests.release.xcconfig */, 4E6A3C226064B1DE9E46EEED /* Pods-RunnerTests.profile.xcconfig */, - 49735E54415AC9D31DE3F31C /* Pods-Runner.debug-production.xcconfig */, - 6AD53F7ED92F0560CF8F1BC5 /* Pods-Runner.debug-staging.xcconfig */, - 123DC1F0EA24762A756F3C4E /* Pods-Runner.debug-development.xcconfig */, - 7F10C650534E1E85C9A2D182 /* Pods-Runner.release-production.xcconfig */, - 249BAEA2FFD95C01E94DE24D /* Pods-Runner.release-staging.xcconfig */, - 74D03CBFC29F4FD09A6B1109 /* Pods-Runner.release-development.xcconfig */, - EEBAF046C540C6CDC33B3F25 /* Pods-Runner.profile-production.xcconfig */, - 36D08432195C6A9424D1BB5A /* Pods-Runner.profile-staging.xcconfig */, - C95105B27FD1BDB934680D51 /* Pods-Runner.profile-development.xcconfig */, - 599BC1B5E00E5BCCCE46CAF7 /* Pods-RunnerTests.debug-production.xcconfig */, - 5E3DCA6C2906ED351D338ADA /* Pods-RunnerTests.debug-staging.xcconfig */, - C5405C2CEA49F45951051E2C /* Pods-RunnerTests.debug-development.xcconfig */, - B4FF8F44555B483921953D3C /* Pods-RunnerTests.release-production.xcconfig */, - 56772D656CE8B8985334389B /* Pods-RunnerTests.release-staging.xcconfig */, - 5E60BBB09F29C09021157B14 /* Pods-RunnerTests.release-development.xcconfig */, - 9108456B5B2EF5D492E1644D /* Pods-RunnerTests.profile-production.xcconfig */, - 4008E2E2FAA8B15105AB138E /* Pods-RunnerTests.profile-staging.xcconfig */, - EC93C4141D44E67BB65BEEF5 /* Pods-RunnerTests.profile-development.xcconfig */, + 49735E54415AC9D31DE3F31C /* Pods-Runner.debug-prod.xcconfig */, + 6AD53F7ED92F0560CF8F1BC5 /* Pods-Runner.debug-stg.xcconfig */, + 123DC1F0EA24762A756F3C4E /* Pods-Runner.debug-dev.xcconfig */, + 7F10C650534E1E85C9A2D182 /* Pods-Runner.release-prod.xcconfig */, + 249BAEA2FFD95C01E94DE24D /* Pods-Runner.release-stg.xcconfig */, + 74D03CBFC29F4FD09A6B1109 /* Pods-Runner.release-dev.xcconfig */, + EEBAF046C540C6CDC33B3F25 /* Pods-Runner.profile-prod.xcconfig */, + 36D08432195C6A9424D1BB5A /* Pods-Runner.profile-stg.xcconfig */, + C95105B27FD1BDB934680D51 /* Pods-Runner.profile-dev.xcconfig */, + 599BC1B5E00E5BCCCE46CAF7 /* Pods-RunnerTests.debug-prod.xcconfig */, + 5E3DCA6C2906ED351D338ADA /* Pods-RunnerTests.debug-stg.xcconfig */, + C5405C2CEA49F45951051E2C /* Pods-RunnerTests.debug-dev.xcconfig */, + B4FF8F44555B483921953D3C /* Pods-RunnerTests.release-prod.xcconfig */, + 56772D656CE8B8985334389B /* Pods-RunnerTests.release-stg.xcconfig */, + 5E60BBB09F29C09021157B14 /* Pods-RunnerTests.release-dev.xcconfig */, + 9108456B5B2EF5D492E1644D /* Pods-RunnerTests.profile-prod.xcconfig */, + 4008E2E2FAA8B15105AB138E /* Pods-RunnerTests.profile-stg.xcconfig */, + EC93C4141D44E67BB65BEEF5 /* Pods-RunnerTests.profile-dev.xcconfig */, ); path = Pods; sourceTree = ""; @@ -524,7 +524,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { - APP_DISPLAY_NAME = ""; + APP_DISPLAY_NAME = "StudyU"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; @@ -718,7 +718,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { - APP_DISPLAY_NAME = ""; + APP_DISPLAY_NAME = "StudyU"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; @@ -749,7 +749,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { - APP_DISPLAY_NAME = ""; + APP_DISPLAY_NAME = "StudyU"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; @@ -776,7 +776,7 @@ }; name = Release; }; - DF570B0B2EDDD435000F0F09 /* Debug-development */ = { + DF570B0B2EDDD435000F0F09 /* Debug-dev */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -832,9 +832,9 @@ SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; - name = "Debug-development"; + name = "Debug-dev"; }; - DF570B0C2EDDD435000F0F09 /* Debug-development */ = { + DF570B0C2EDDD435000F0F09 /* Debug-dev */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { @@ -863,11 +863,11 @@ SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Debug-development"; + name = "Debug-dev"; }; - DF570B0D2EDDD435000F0F09 /* Debug-development */ = { + DF570B0D2EDDD435000F0F09 /* Debug-dev */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C5405C2CEA49F45951051E2C /* Pods-RunnerTests.debug-development.xcconfig */; + baseConfigurationReference = C5405C2CEA49F45951051E2C /* Pods-RunnerTests.debug-dev.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -881,9 +881,9 @@ SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; }; - name = "Debug-development"; + name = "Debug-dev"; }; - DF570B0E2EDDD442000F0F09 /* Debug-staging */ = { + DF570B0E2EDDD442000F0F09 /* Debug-stg */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -939,9 +939,9 @@ SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; - name = "Debug-staging"; + name = "Debug-stg"; }; - DF570B0F2EDDD442000F0F09 /* Debug-staging */ = { + DF570B0F2EDDD442000F0F09 /* Debug-stg */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { @@ -961,7 +961,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.staging; + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.stg; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore health.studyu.app"; @@ -970,11 +970,11 @@ SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Debug-staging"; + name = "Debug-stg"; }; - DF570B102EDDD442000F0F09 /* Debug-staging */ = { + DF570B102EDDD442000F0F09 /* Debug-stg */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5E3DCA6C2906ED351D338ADA /* Pods-RunnerTests.debug-staging.xcconfig */; + baseConfigurationReference = 5E3DCA6C2906ED351D338ADA /* Pods-RunnerTests.debug-stg.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -988,9 +988,9 @@ SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; }; - name = "Debug-staging"; + name = "Debug-stg"; }; - DF570B112EDDD44A000F0F09 /* Debug-production */ = { + DF570B112EDDD44A000F0F09 /* Debug-prod */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1046,9 +1046,9 @@ SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; - name = "Debug-production"; + name = "Debug-prod"; }; - DF570B122EDDD44A000F0F09 /* Debug-production */ = { + DF570B122EDDD44A000F0F09 /* Debug-prod */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { @@ -1077,11 +1077,11 @@ SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Debug-production"; + name = "Debug-prod"; }; - DF570B132EDDD44A000F0F09 /* Debug-production */ = { + DF570B132EDDD44A000F0F09 /* Debug-prod */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 599BC1B5E00E5BCCCE46CAF7 /* Pods-RunnerTests.debug-production.xcconfig */; + baseConfigurationReference = 599BC1B5E00E5BCCCE46CAF7 /* Pods-RunnerTests.debug-prod.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -1095,9 +1095,9 @@ SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; }; - name = "Debug-production"; + name = "Debug-prod"; }; - DF570B142EDDD454000F0F09 /* Release-development */ = { + DF570B142EDDD454000F0F09 /* Release-dev */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1150,9 +1150,9 @@ TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; - name = "Release-development"; + name = "Release-dev"; }; - DF570B152EDDD454000F0F09 /* Release-development */ = { + DF570B152EDDD454000F0F09 /* Release-dev */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { @@ -1181,11 +1181,11 @@ SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Release-development"; + name = "Release-dev"; }; - DF570B162EDDD454000F0F09 /* Release-development */ = { + DF570B162EDDD454000F0F09 /* Release-dev */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5E60BBB09F29C09021157B14 /* Pods-RunnerTests.release-development.xcconfig */; + baseConfigurationReference = 5E60BBB09F29C09021157B14 /* Pods-RunnerTests.release-dev.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -1197,9 +1197,9 @@ SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; }; - name = "Release-development"; + name = "Release-dev"; }; - DF570B172EDDD468000F0F09 /* Release-staging */ = { + DF570B172EDDD468000F0F09 /* Release-stg */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1252,9 +1252,9 @@ TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; - name = "Release-staging"; + name = "Release-stg"; }; - DF570B182EDDD468000F0F09 /* Release-staging */ = { + DF570B182EDDD468000F0F09 /* Release-stg */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { @@ -1275,7 +1275,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.staging; + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.stg; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore health.studyu.app"; @@ -1283,11 +1283,11 @@ SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Release-staging"; + name = "Release-stg"; }; - DF570B192EDDD468000F0F09 /* Release-staging */ = { + DF570B192EDDD468000F0F09 /* Release-stg */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 56772D656CE8B8985334389B /* Pods-RunnerTests.release-staging.xcconfig */; + baseConfigurationReference = 56772D656CE8B8985334389B /* Pods-RunnerTests.release-stg.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -1299,9 +1299,9 @@ SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; }; - name = "Release-staging"; + name = "Release-stg"; }; - DF570B1A2EDDD46E000F0F09 /* Release-production */ = { + DF570B1A2EDDD46E000F0F09 /* Release-prod */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1354,9 +1354,9 @@ TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; - name = "Release-production"; + name = "Release-prod"; }; - DF570B1B2EDDD46E000F0F09 /* Release-production */ = { + DF570B1B2EDDD46E000F0F09 /* Release-prod */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { @@ -1385,11 +1385,11 @@ SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Release-production"; + name = "Release-prod"; }; - DF570B1C2EDDD46E000F0F09 /* Release-production */ = { + DF570B1C2EDDD46E000F0F09 /* Release-prod */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B4FF8F44555B483921953D3C /* Pods-RunnerTests.release-production.xcconfig */; + baseConfigurationReference = B4FF8F44555B483921953D3C /* Pods-RunnerTests.release-prod.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -1401,9 +1401,9 @@ SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; }; - name = "Release-production"; + name = "Release-prod"; }; - DF570B1D2EDDD8A3000F0F09 /* Profile-development */ = { + DF570B1D2EDDD8A3000F0F09 /* Profile-dev */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1454,9 +1454,9 @@ TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; - name = "Profile-development"; + name = "Profile-dev"; }; - DF570B1E2EDDD8A3000F0F09 /* Profile-development */ = { + DF570B1E2EDDD8A3000F0F09 /* Profile-dev */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { @@ -1485,11 +1485,11 @@ SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Profile-development"; + name = "Profile-dev"; }; - DF570B1F2EDDD8A3000F0F09 /* Profile-development */ = { + DF570B1F2EDDD8A3000F0F09 /* Profile-dev */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EC93C4141D44E67BB65BEEF5 /* Pods-RunnerTests.profile-development.xcconfig */; + baseConfigurationReference = EC93C4141D44E67BB65BEEF5 /* Pods-RunnerTests.profile-dev.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -1501,9 +1501,9 @@ SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; }; - name = "Profile-development"; + name = "Profile-dev"; }; - DF570B202EDDD8AB000F0F09 /* Profile-staging */ = { + DF570B202EDDD8AB000F0F09 /* Profile-stg */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1554,9 +1554,9 @@ TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; - name = "Profile-staging"; + name = "Profile-stg"; }; - DF570B212EDDD8AB000F0F09 /* Profile-staging */ = { + DF570B212EDDD8AB000F0F09 /* Profile-stg */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { @@ -1577,7 +1577,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.staging; + PRODUCT_BUNDLE_IDENTIFIER = health.studyu.app.stg; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore health.studyu.app"; @@ -1585,11 +1585,11 @@ SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Profile-staging"; + name = "Profile-stg"; }; - DF570B222EDDD8AB000F0F09 /* Profile-staging */ = { + DF570B222EDDD8AB000F0F09 /* Profile-stg */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4008E2E2FAA8B15105AB138E /* Pods-RunnerTests.profile-staging.xcconfig */; + baseConfigurationReference = 4008E2E2FAA8B15105AB138E /* Pods-RunnerTests.profile-stg.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -1601,9 +1601,9 @@ SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; }; - name = "Profile-staging"; + name = "Profile-stg"; }; - DF570B232EDDD8B1000F0F09 /* Profile-production */ = { + DF570B232EDDD8B1000F0F09 /* Profile-prod */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1654,9 +1654,9 @@ TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; - name = "Profile-production"; + name = "Profile-prod"; }; - DF570B242EDDD8B1000F0F09 /* Profile-production */ = { + DF570B242EDDD8B1000F0F09 /* Profile-prod */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { @@ -1685,11 +1685,11 @@ SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Profile-production"; + name = "Profile-prod"; }; - DF570B252EDDD8B1000F0F09 /* Profile-production */ = { + DF570B252EDDD8B1000F0F09 /* Profile-prod */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9108456B5B2EF5D492E1644D /* Pods-RunnerTests.profile-production.xcconfig */; + baseConfigurationReference = 9108456B5B2EF5D492E1644D /* Pods-RunnerTests.profile-prod.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -1701,7 +1701,7 @@ SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; }; - name = "Profile-production"; + name = "Profile-prod"; }; /* End XCBuildConfiguration section */ @@ -1710,17 +1710,17 @@ isa = XCConfigurationList; buildConfigurations = ( 331C8088294A63A400263BE5 /* Debug */, - DF570B132EDDD44A000F0F09 /* Debug-production */, - DF570B102EDDD442000F0F09 /* Debug-staging */, - DF570B0D2EDDD435000F0F09 /* Debug-development */, + DF570B132EDDD44A000F0F09 /* Debug-prod */, + DF570B102EDDD442000F0F09 /* Debug-stg */, + DF570B0D2EDDD435000F0F09 /* Debug-dev */, 331C8089294A63A400263BE5 /* Release */, - DF570B1C2EDDD46E000F0F09 /* Release-production */, - DF570B192EDDD468000F0F09 /* Release-staging */, - DF570B162EDDD454000F0F09 /* Release-development */, + DF570B1C2EDDD46E000F0F09 /* Release-prod */, + DF570B192EDDD468000F0F09 /* Release-stg */, + DF570B162EDDD454000F0F09 /* Release-dev */, 331C808A294A63A400263BE5 /* Profile */, - DF570B252EDDD8B1000F0F09 /* Profile-production */, - DF570B222EDDD8AB000F0F09 /* Profile-staging */, - DF570B1F2EDDD8A3000F0F09 /* Profile-development */, + DF570B252EDDD8B1000F0F09 /* Profile-prod */, + DF570B222EDDD8AB000F0F09 /* Profile-stg */, + DF570B1F2EDDD8A3000F0F09 /* Profile-dev */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1729,17 +1729,17 @@ isa = XCConfigurationList; buildConfigurations = ( 97C147031CF9000F007C117D /* Debug */, - DF570B112EDDD44A000F0F09 /* Debug-production */, - DF570B0E2EDDD442000F0F09 /* Debug-staging */, - DF570B0B2EDDD435000F0F09 /* Debug-development */, + DF570B112EDDD44A000F0F09 /* Debug-prod */, + DF570B0E2EDDD442000F0F09 /* Debug-stg */, + DF570B0B2EDDD435000F0F09 /* Debug-dev */, 97C147041CF9000F007C117D /* Release */, - DF570B1A2EDDD46E000F0F09 /* Release-production */, - DF570B172EDDD468000F0F09 /* Release-staging */, - DF570B142EDDD454000F0F09 /* Release-development */, + DF570B1A2EDDD46E000F0F09 /* Release-prod */, + DF570B172EDDD468000F0F09 /* Release-stg */, + DF570B142EDDD454000F0F09 /* Release-dev */, 249021D3217E4FDB00AE95B9 /* Profile */, - DF570B232EDDD8B1000F0F09 /* Profile-production */, - DF570B202EDDD8AB000F0F09 /* Profile-staging */, - DF570B1D2EDDD8A3000F0F09 /* Profile-development */, + DF570B232EDDD8B1000F0F09 /* Profile-prod */, + DF570B202EDDD8AB000F0F09 /* Profile-stg */, + DF570B1D2EDDD8A3000F0F09 /* Profile-dev */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1748,17 +1748,17 @@ isa = XCConfigurationList; buildConfigurations = ( 97C147061CF9000F007C117D /* Debug */, - DF570B122EDDD44A000F0F09 /* Debug-production */, - DF570B0F2EDDD442000F0F09 /* Debug-staging */, - DF570B0C2EDDD435000F0F09 /* Debug-development */, + DF570B122EDDD44A000F0F09 /* Debug-prod */, + DF570B0F2EDDD442000F0F09 /* Debug-stg */, + DF570B0C2EDDD435000F0F09 /* Debug-dev */, 97C147071CF9000F007C117D /* Release */, - DF570B1B2EDDD46E000F0F09 /* Release-production */, - DF570B182EDDD468000F0F09 /* Release-staging */, - DF570B152EDDD454000F0F09 /* Release-development */, + DF570B1B2EDDD46E000F0F09 /* Release-prod */, + DF570B182EDDD468000F0F09 /* Release-stg */, + DF570B152EDDD454000F0F09 /* Release-dev */, 249021D4217E4FDB00AE95B9 /* Profile */, - DF570B242EDDD8B1000F0F09 /* Profile-production */, - DF570B212EDDD8AB000F0F09 /* Profile-staging */, - DF570B1E2EDDD8A3000F0F09 /* Profile-development */, + DF570B242EDDD8B1000F0F09 /* Profile-prod */, + DF570B212EDDD8AB000F0F09 /* Profile-stg */, + DF570B1E2EDDD8A3000F0F09 /* Profile-dev */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/production.xcscheme b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme similarity index 71% rename from app/ios/Runner.xcodeproj/xcshareddata/xcschemes/production.xcscheme rename to app/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme index d60fec597..ea4f9e925 100644 --- a/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/production.xcscheme +++ b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme @@ -24,18 +24,36 @@ + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + + + + + + + + buildConfiguration = "Debug-dev"> diff --git a/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/prod.xcscheme similarity index 70% rename from app/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme rename to app/ios/Runner.xcodeproj/xcshareddata/xcschemes/prod.xcscheme index 074331543..3373bb06d 100644 --- a/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme +++ b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/prod.xcscheme @@ -24,18 +24,36 @@ + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + + + + + + + + buildConfiguration = "Debug-prod"> diff --git a/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/development.xcscheme b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/stg.xcscheme similarity index 73% rename from app/ios/Runner.xcodeproj/xcshareddata/xcschemes/development.xcscheme rename to app/ios/Runner.xcodeproj/xcshareddata/xcschemes/stg.xcscheme index c537382db..366630238 100644 --- a/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/development.xcscheme +++ b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/stg.xcscheme @@ -24,15 +24,35 @@ + + + + + + + + + + + buildConfiguration = "Debug-stg"> From 86e0b24fbdf211ad3d52afaa49af652e1551353d Mon Sep 17 00:00:00 2001 From: Johannes Vedder Date: Thu, 4 Dec 2025 15:26:13 +0100 Subject: [PATCH 05/14] fix: update study schedule localization. --- designer_v2/lib/localization/app_localizations_de.dart | 2 +- designer_v2/lib/localization/app_localizations_en.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_v2/lib/localization/app_localizations_de.dart b/designer_v2/lib/localization/app_localizations_de.dart index 4ecc7c430..2bf43bffc 100644 --- a/designer_v2/lib/localization/app_localizations_de.dart +++ b/designer_v2/lib/localization/app_localizations_de.dart @@ -2316,7 +2316,7 @@ class AppLocalizationsDe extends AppLocalizations { @override String get study_schedule_balanced_description => - 'Ausgeglichen: Teilnehmer werden zufällig ABAB- oder BABA-Sequenzen zugeordnet, um Reihenfolgeneffekte zu reduzieren.'; + 'Gegengewicht: Jeder Teilnehmer folgt einem ABBA-Muster und wechselt zwischen Interventionen in einer vorhersagbaren Sequenz.'; @override String get study_schedule_random_description => diff --git a/designer_v2/lib/localization/app_localizations_en.dart b/designer_v2/lib/localization/app_localizations_en.dart index 67672c2f5..9d6400b91 100644 --- a/designer_v2/lib/localization/app_localizations_en.dart +++ b/designer_v2/lib/localization/app_localizations_en.dart @@ -2282,7 +2282,7 @@ class AppLocalizationsEn extends AppLocalizations { @override String get study_schedule_balanced_description => - 'Balanced: Participants are randomly assigned to either ABAB or BABA sequences to reduce order effects.'; + 'Counterbalanced: Each participant follows an ABBA pattern, switching between interventions in a predictable sequence.'; @override String get study_schedule_random_description => From 1f441d039dca8d709c5df8ad9c8f9dce7a85913d Mon Sep 17 00:00:00 2001 From: Johannes Vedder Date: Thu, 4 Dec 2025 15:26:39 +0100 Subject: [PATCH 06/14] fix: Migrate Flutter web commands to use flavors, add .aiexclude, fix Android keystore path, and enable dynamic Fastlane package names based on flavor. --- app/android/.aiexclude | 2 ++ app/android/app/build.gradle.kts | 2 +- app/android/fastlane/Appfile | 2 +- app/android/fastlane/Fastfile | 8 ++++++++ pubspec.yaml | 10 +++++----- 5 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 app/android/.aiexclude diff --git a/app/android/.aiexclude b/app/android/.aiexclude new file mode 100644 index 000000000..cd6edbfa6 --- /dev/null +++ b/app/android/.aiexclude @@ -0,0 +1,2 @@ +key.properties +*.jks \ No newline at end of file diff --git a/app/android/app/build.gradle.kts b/app/android/app/build.gradle.kts index 11dfb67c3..976d89e64 100644 --- a/app/android/app/build.gradle.kts +++ b/app/android/app/build.gradle.kts @@ -55,7 +55,7 @@ android { create("release") { keyAlias = keystoreProperties["keyAlias"] as String? keyPassword = keystoreProperties["keyPassword"] as String? - storeFile = keystoreProperties["storeFile"]?.let { file(it as String) } + storeFile = keystoreProperties["storeFile"]?.let { rootProject.file(it as String) } storePassword = keystoreProperties["storePassword"] as String? } } diff --git a/app/android/fastlane/Appfile b/app/android/fastlane/Appfile index cfd0bae86..074152d2f 100644 --- a/app/android/fastlane/Appfile +++ b/app/android/fastlane/Appfile @@ -1,3 +1,3 @@ # json_key_file("") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one json_key_data_raw ENV['PLAY_CREDS_JSON'] -package_name("health.studyu.app") +# package_name("health.studyu.app") diff --git a/app/android/fastlane/Fastfile b/app/android/fastlane/Fastfile index 5031ccc6f..39c535682 100644 --- a/app/android/fastlane/Fastfile +++ b/app/android/fastlane/Fastfile @@ -19,8 +19,16 @@ platform :android do desc "Deploy a new version to Google Play" lane :deploy_internal do flavor = ENV['FLAVOR'] + package_name = "health.studyu.app" + if flavor == "stg" + package_name = "health.studyu.app.stg" + elsif flavor == "dev" + package_name = "health.studyu.app.dev" + end + upload_to_play_store( track: 'internal', + package_name: package_name, aab: "../build/app/outputs/bundle/#{flavor}Release/app-#{flavor}-release.aab", ) end diff --git a/pubspec.yaml b/pubspec.yaml index 74f92dab6..67ba20081 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -94,7 +94,7 @@ melos: dev:app: run: | melos exec -c 1 -- \ - "flutter run -d chrome --web-port 8080 --dart-define=STUDYU_ENV=.env.dev" + "flutter run -d chrome --web-port 8080 --flavor dev" packageFilters: scope: studyu_app description: Runs StudyU App with the development environment @@ -102,7 +102,7 @@ melos: dev:designer_v2: run: | melos exec -c 1 -- \ - "flutter run -d chrome --web-port 8081 --dart-define=STUDYU_ENV=.env.dev" + "flutter run -d chrome --web-port 8081 --flavor dev" packageFilters: scope: studyu_designer_v2 description: Runs StudyU Designer with the development environment @@ -171,7 +171,7 @@ melos: build:web:dev: run: | melos exec -c 2 --fail-fast -- \ - "flutter build web --dart-define=STUDYU_ENV=.env.dev" + "flutter build web --flavor dev" description: Build web dev. packageFilters: scope: [ studyu_app, studyu_designer_v2 ] @@ -180,7 +180,7 @@ melos: build:web:app:dev: run: | melos exec -c 2 --fail-fast -- \ - "flutter build web --dart-define=STUDYU_ENV=.env.dev" + "flutter build web --flavor dev" description: Build web app dev. packageFilters: scope: studyu_app @@ -189,7 +189,7 @@ melos: build:web:designer_v2:dev: run: | melos exec -c 2 --fail-fast -- \ - "flutter build web --dart-define=STUDYU_ENV=.env.dev" + "flutter build web --flavor dev" description: Build web designer_v2 dev. packageFilters: scope: studyu_designer_v2 From e520970a7438288a191bc7fbe1d0b67bf9cbee27 Mon Sep 17 00:00:00 2001 From: johannesvedder <104295301+johannesvedder@users.noreply.github.com> Date: Thu, 4 Dec 2025 14:27:49 +0000 Subject: [PATCH 07/14] lint: Apply final newline changes --- app/android/.aiexclude | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/android/.aiexclude b/app/android/.aiexclude index cd6edbfa6..5900ac4da 100644 --- a/app/android/.aiexclude +++ b/app/android/.aiexclude @@ -1,2 +1,2 @@ key.properties -*.jks \ No newline at end of file +*.jks From 137e7da28782b242af7efe6feba7e65691e8de08 Mon Sep 17 00:00:00 2001 From: Johannes Vedder Date: Thu, 4 Dec 2025 15:40:27 +0100 Subject: [PATCH 08/14] ci: fix syntax --- .github/workflows/deploy-apps.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/deploy-apps.yml b/.github/workflows/deploy-apps.yml index 31f316c59..28928e45c 100644 --- a/.github/workflows/deploy-apps.yml +++ b/.github/workflows/deploy-apps.yml @@ -75,8 +75,6 @@ jobs: ENVIRONMENT="${{ github.event.inputs.environment }}" elif [ "${{ github.ref }}" == "refs/heads/main" ]; then ENVIRONMENT="prod" - else - ENVIRONMENT="prod" else # dev branch defaults to dev ENVIRONMENT="dev" From 7475fa37609ebabc28d02f3d93dce92e56ba8a97 Mon Sep 17 00:00:00 2001 From: Johannes Vedder Date: Thu, 4 Dec 2025 15:42:35 +0100 Subject: [PATCH 09/14] fix: Dynamically configure iOS app identifier and provisioning profiles in Fastlane based on the scheme. --- app/ios/fastlane/Fastfile | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/app/ios/fastlane/Fastfile b/app/ios/fastlane/Fastfile index 36e1d3c84..9b9ac7827 100644 --- a/app/ios/fastlane/Fastfile +++ b/app/ios/fastlane/Fastfile @@ -47,8 +47,17 @@ platform :ios do key_content: ENV['FASTLANE_APP_IOS_KEY_CONTENT'] ) + scheme = ENV['SCHEME'] + app_identifier = "health.studyu.app" + if scheme == "stg" + app_identifier = "health.studyu.app.stg" + elsif scheme == "dev" + app_identifier = "health.studyu.app.dev" + end + match( type: "appstore", + app_identifier: app_identifier, git_url: ENV['FASTLANE_APP_IOS_MATCH_GIT_URL'], git_private_key: ENV['FASTLANE_APP_IOS_MATCH_GIT_PRIVATE_KEY'], readonly: true, @@ -57,12 +66,17 @@ platform :ios do ) build_app( - scheme: ENV['SCHEME'], + scheme: scheme, export_method: "app-store", + export_options: { + provisioningProfiles: { + app_identifier => "match AppStore #{app_identifier}" + } + } ) upload_to_testflight( - app_identifier: "health.studyu.app", + app_identifier: app_identifier, team_id: "PG566C9XUK", skip_waiting_for_build_processing: false ) From 57add258eb5f267b92eb260851454e137af0f5a5 Mon Sep 17 00:00:00 2001 From: Johannes Vedder Date: Thu, 4 Dec 2025 16:13:19 +0100 Subject: [PATCH 10/14] fix: streamline GitHub Actions environment variable setting and keystore path, --- .github/workflows/deploy-apps.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy-apps.yml b/.github/workflows/deploy-apps.yml index 28928e45c..77e68e55e 100644 --- a/.github/workflows/deploy-apps.yml +++ b/.github/workflows/deploy-apps.yml @@ -85,22 +85,24 @@ jobs: # Set build parameters based on environment case $ENVIRONMENT in prod) - echo "FLAVOR=prod" >> $GITHUB_ENV + FLAVOR="prod" ;; stg) - echo "FLAVOR=stg" >> $GITHUB_ENV + FLAVOR="stg" ;; dev) - echo "FLAVOR=dev" >> $GITHUB_ENV + FLAVOR="dev" ;; esac + echo "FLAVOR=$FLAVOR" >> $GITHUB_ENV + echo "Building for environment: $ENVIRONMENT" echo "Flavor: $FLAVOR" - name: Prepare upload key run: | - echo "$STUDYU_ANDROID_KEYSTORE_BASE64" | base64 --decode > app/keystore.jks + echo "$STUDYU_ANDROID_KEYSTORE_BASE64" | base64 --decode > keystore.jks echo "$STUDYU_KEY_PROPERTIES" > key.properties working-directory: app/android env: From 89265188b4df3422194da4dac7b31de8dc1a1bbc Mon Sep 17 00:00:00 2001 From: Johannes Vedder Date: Thu, 4 Dec 2025 16:13:26 +0100 Subject: [PATCH 11/14] chore: enable write mode for Fastlane Match --- app/ios/fastlane/Fastfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/ios/fastlane/Fastfile b/app/ios/fastlane/Fastfile index 9b9ac7827..f237650c9 100644 --- a/app/ios/fastlane/Fastfile +++ b/app/ios/fastlane/Fastfile @@ -60,7 +60,7 @@ platform :ios do app_identifier: app_identifier, git_url: ENV['FASTLANE_APP_IOS_MATCH_GIT_URL'], git_private_key: ENV['FASTLANE_APP_IOS_MATCH_GIT_PRIVATE_KEY'], - readonly: true, + readonly: false, keychain_name: keychain_name, keychain_password: keychain_password ) From 3d7800f19199769a998ae6ee2952e96ba8ad8c60 Mon Sep 17 00:00:00 2001 From: Johannes Vedder Date: Thu, 4 Dec 2025 16:27:07 +0100 Subject: [PATCH 12/14] refactor: consolidate SCHEME variable assignment and export in deploy workflow. --- .github/workflows/deploy-apps.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/deploy-apps.yml b/.github/workflows/deploy-apps.yml index 77e68e55e..ccb97d399 100644 --- a/.github/workflows/deploy-apps.yml +++ b/.github/workflows/deploy-apps.yml @@ -163,31 +163,31 @@ jobs: - name: Determine build environment and scheme id: build-env run: | - # Determine environment based on branch or manual input + # Determine environment based on branch or manual input (No change needed here) if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then ENVIRONMENT="${{ github.event.inputs.environment }}" elif [ "${{ github.ref }}" == "refs/heads/main" ]; then ENVIRONMENT="prod" else - # dev branch defaults to dev ENVIRONMENT="dev" fi - echo "ENVIRONMENT=$ENVIRONMENT" >> $GITHUB_ENV - - # Set build parameters based on environment + # Set SCHEME locally first case $ENVIRONMENT in prod) - echo "SCHEME=prod" >> $GITHUB_ENV + SCHEME="prod" ;; stg) - echo "SCHEME=stg" >> $GITHUB_ENV + SCHEME="stg" ;; dev) - echo "SCHEME=dev" >> $GITHUB_ENV + SCHEME="dev" ;; esac + echo "ENVIRONMENT=$ENVIRONMENT" >> $GITHUB_ENV + echo "SCHEME=$SCHEME" >> $GITHUB_ENV + echo "Building for environment: $ENVIRONMENT" echo "Scheme: $SCHEME" From b107ea2af06a7b1b9f25ca9f09a9d929bfd196b6 Mon Sep 17 00:00:00 2001 From: Johannes Vedder <104295301+johannesvedder@users.noreply.github.com> Date: Fri, 5 Dec 2025 09:33:44 +0100 Subject: [PATCH 13/14] Update comment for build environment determination --- .github/workflows/deploy-apps.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-apps.yml b/.github/workflows/deploy-apps.yml index ccb97d399..72cfcba4f 100644 --- a/.github/workflows/deploy-apps.yml +++ b/.github/workflows/deploy-apps.yml @@ -163,7 +163,7 @@ jobs: - name: Determine build environment and scheme id: build-env run: | - # Determine environment based on branch or manual input (No change needed here) + # Determine environment based on branch or manual input if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then ENVIRONMENT="${{ github.event.inputs.environment }}" elif [ "${{ github.ref }}" == "refs/heads/main" ]; then From 5bc82b5c45b8cfa7e953d1c70a67fb37e0df1cfa Mon Sep 17 00:00:00 2001 From: Johannes Vedder <104295301+johannesvedder@users.noreply.github.com> Date: Fri, 5 Dec 2025 10:10:07 +0100 Subject: [PATCH 14/14] ci: Enable caching for Flutter FVM setup --- .github/workflows/deploy-apps.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy-apps.yml b/.github/workflows/deploy-apps.yml index 72cfcba4f..c0371a06f 100644 --- a/.github/workflows/deploy-apps.yml +++ b/.github/workflows/deploy-apps.yml @@ -65,7 +65,7 @@ jobs: uses: kuhnroyal/flutter-fvm-config-action/setup@v3 with: # todo - cache: false + cache: true - name: Determine build environment id: build-env @@ -158,7 +158,7 @@ jobs: uses: kuhnroyal/flutter-fvm-config-action/setup@v3 with: # todo - cache: false + cache: true - name: Determine build environment and scheme id: build-env