From 7629ab1c3ec5854d1f785dde0cf7348b037d70bb Mon Sep 17 00:00:00 2001 From: Richard Brown Date: Mon, 6 Jul 2026 20:22:53 +0100 Subject: [PATCH 1/2] chore(ios): enable iOS builds and add a macOS CI job The iOS scaffold could not build against the current stack. The deployment target was still the ancient template default of 8.0, but firebase_core 4.x pulls in Firebase iOS SDK 12.14, whose pods hard-require iOS 15, so pod install would have refused. The Swift config was likewise stuck on 4.0 with a pre-4.2 AppDelegate, a language mode now deprecated on modern Xcode. - bump IPHONEOS_DEPLOYMENT_TARGET (and AppFrameworkInfo MinimumOSVersion) from 8.0 to 15.0 - add a Podfile pinning platform :ios, '15.0' with a post_install hook that forces every pod to iOS 15 - add ios/Runner/GoogleService-Info.plist (real iOS config from the Firebase project) wired into the Runner target, mirroring how the Android google-services.json is already committed - modernise AppDelegate.swift and bump SWIFT_VERSION to 5.0 - add a build-ios GitHub Actions job on macos-latest running flutter build ios --release --no-codesign, so the app can be built for iOS without owning a Mac This proves the iOS toolchain end to end without a paid Apple Developer account; signing and TestFlight steps are stubbed in the workflow for later. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/main.yml | 57 ++++++++++++++++++++++++++++ ios/Flutter/AppFrameworkInfo.plist | 2 +- ios/Podfile | 49 ++++++++++++++++++++++++ ios/Runner.xcodeproj/project.pbxproj | 16 +++++--- ios/Runner/AppDelegate.swift | 6 +-- ios/Runner/GoogleService-Info.plist | 38 +++++++++++++++++++ 6 files changed, 158 insertions(+), 10 deletions(-) create mode 100644 ios/Podfile create mode 100644 ios/Runner/GoogleService-Info.plist diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 233f93ae..07a86645 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -4,6 +4,9 @@ on: pull_request: branches: - master + # Allow running the (pricier) macOS iOS build on demand from the Actions tab + # without opening a PR. + workflow_dispatch: jobs: build: @@ -33,3 +36,57 @@ jobs: - run: flutter analyze - run: flutter test - run: flutter build web + + # Compiles the iOS app on a macOS runner. Proves the whole iOS toolchain is + # healthy — CocoaPods resolves the Firebase 12.x pods against the iOS 15 + # deployment target, and Dart compiles/links to a native Runner.app — WITHOUT + # needing a paid Apple Developer account or signing certificates. This is the + # only way to build for iOS without a Mac of your own. + build-ios: + runs-on: macos-latest + + steps: + - uses: actions/checkout@v6 + + - uses: subosito/flutter-action@v2 + with: + flutter-version: '3.x' + channel: 'stable' + + - name: Create secrets.dart from example (CI placeholder) + run: | + if [ ! -f lib/secrets.dart ]; then + cp lib/secrets.dart.example lib/secrets.dart + fi + + - run: flutter pub get + + # Runs `pod install` then compiles & links an unsigned release Runner.app. + # --no-codesign skips the parts that would require certificates/profiles. + - run: flutter build ios --release --no-codesign + + # ---------------------------------------------------------------------- + # NEXT STEP — ship to a physical device / TestFlight (needs a paid Apple + # Developer account, $99/yr). Replace the step above with a signed archive + # and upload. Sketch of the extra steps: + # + # - name: Import signing certificate + # uses: apple-actions/import-codesign-certs@v3 + # with: + # p12-file-base64: ${{ secrets.IOS_DIST_CERT_P12 }} + # p12-password: ${{ secrets.IOS_DIST_CERT_PASSWORD }} + # - name: Install provisioning profile + # uses: apple-actions/download-provisioning-profiles@v3 + # with: + # bundle-id: com.code418.postboxGame + # issuer-id: ${{ secrets.ASC_ISSUER_ID }} + # api-key-id: ${{ secrets.ASC_KEY_ID }} + # api-private-key: ${{ secrets.ASC_KEY_P8 }} + # - run: flutter build ipa --release --export-options-plist=ios/ExportOptions.plist + # - name: Upload to TestFlight + # run: | + # xcrun altool --upload-app -f build/ios/ipa/*.ipa -t ios \ + # --apiKey "$ASC_KEY_ID" --apiIssuer "$ASC_ISSUER_ID" + # + # Add the secrets under: repo Settings -> Secrets and variables -> Actions. + # ---------------------------------------------------------------------- diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist index 9367d483..0d140800 100644 --- a/ios/Flutter/AppFrameworkInfo.plist +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 8.0 + 15.0 diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 00000000..1c5bae6c --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,49 @@ +# Firebase iOS SDK 12.x (pinned by firebase_core) requires iOS 15.0 as the +# minimum deployment target. Keep this in sync with IPHONEOS_DEPLOYMENT_TARGET +# in Runner.xcodeproj and MinimumOSVersion in Flutter/AppFrameworkInfo.plist. +platform :ios, '15.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build +# latency; disabling it speeds up `pod install` in CI. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + target.build_configurations.each do |config| + # Force every pod to the Firebase-required minimum. Some transitive pods + # still default to iOS 12/13, which breaks the archive against Firebase 12.x. + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.0' + end + end +end diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index f4fd7ff3..71cf82d5 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -18,6 +18,7 @@ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + A1B2C3D4E5F6000000000002 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = A1B2C3D4E5F6000000000001 /* GoogleService-Info.plist */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -51,6 +52,7 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 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 = ""; }; + A1B2C3D4E5F6000000000001 /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -103,6 +105,7 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 97C147021CF9000F007C117D /* Info.plist */, + A1B2C3D4E5F6000000000001 /* GoogleService-Info.plist */, 97C146F11CF9000F007C117D /* Supporting Files */, 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, @@ -182,6 +185,7 @@ files = ( 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + A1B2C3D4E5F6000000000002 /* GoogleService-Info.plist in Resources */, 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, @@ -293,7 +297,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -321,7 +325,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.code418.postboxGame; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Profile; @@ -372,7 +376,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -420,7 +424,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; @@ -452,7 +456,7 @@ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -479,7 +483,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 71cc41e3..62666446 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -1,11 +1,11 @@ -import UIKit import Flutter +import UIKit -@UIApplicationMain +@main @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]? + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist new file mode 100644 index 00000000..9a0c7aaa --- /dev/null +++ b/ios/Runner/GoogleService-Info.plist @@ -0,0 +1,38 @@ + + + + + CLIENT_ID + 176793005702-rmq2h89o58g1lbe6bnqtg9rnllu8gv80.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.176793005702-rmq2h89o58g1lbe6bnqtg9rnllu8gv80 + ANDROID_CLIENT_ID + 176793005702-7tqdaluv5ivgo73geifldhnts6dj14kq.apps.googleusercontent.com + API_KEY + AIzaSyCH_6MxE42i6S62k_1jNczL9ckp40H_gFs + GCM_SENDER_ID + 176793005702 + PLIST_VERSION + 1 + BUNDLE_ID + com.code418.postboxGame + PROJECT_ID + the-postbox-game + STORAGE_BUCKET + the-postbox-game.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:176793005702:ios:471dddd78becfe8c1eab07 + DATABASE_URL + https://the-postbox-game.firebaseio.com + + From 54e349f0f2d987648662d3fe40cdb45656ff9cb2 Mon Sep 17 00:00:00 2001 From: Richard Brown Date: Mon, 6 Jul 2026 21:40:54 +0100 Subject: [PATCH 2/2] fix(ios): add phone flavor so flutter build ios resolves the default pubspec's `default-flavor: phone` (added so `flutter run` picks a flavor given the three Android product flavours) is applied to every build, including iOS. The iOS project only had the stock `Runner` scheme, so `flutter build ios` looked for a non-existent `Phone` scheme and failed with the misleading "does not define custom schemes / cannot use the --flavor option" error before pod install even ran. Mirror the Android `phone` flavour on iOS: - add Debug/Profile/Release-phone build configurations (project + target) - add a shared phone.xcscheme pointing at those configurations - map the new configs to build types in the Podfile so CocoaPods links the right pod variant per configuration Co-Authored-By: Claude Opus 4.8 (1M context) --- ios/Podfile | 7 + ios/Runner.xcodeproj/project.pbxproj | 237 ++++++++++++++++++ .../xcshareddata/xcschemes/phone.xcscheme | 93 +++++++ 3 files changed, 337 insertions(+) create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/phone.xcscheme diff --git a/ios/Podfile b/ios/Podfile index 1c5bae6c..71cf5242 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -7,10 +7,17 @@ platform :ios, '15.0' # latency; disabling it speeds up `pod install` in CI. ENV['COCOAPODS_DISABLE_STATS'] = 'true' +# The app defines a `phone` flavor (mirroring the Android product flavours), so +# the Xcode project carries Debug/Profile/Release-phone build configurations in +# addition to the base ones. CocoaPods must know the build type of each, or it +# assumes :release and mislinks debug pods. project 'Runner', { 'Debug' => :debug, 'Profile' => :release, 'Release' => :release, + 'Debug-phone' => :debug, + 'Profile-phone' => :release, + 'Release-phone' => :release, } def flutter_root diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 71cf82d5..c860e5e4 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -488,6 +488,237 @@ }; name = Release; }; + A1B2C3D4E5F6000000000010 /* Debug-phone */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + 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_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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + 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; + 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 = 15.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = "Debug-phone"; + }; + A1B2C3D4E5F6000000000011 /* Release-phone */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + 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_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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + 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; + 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 = 15.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Release-phone"; + }; + A1B2C3D4E5F6000000000012 /* Profile-phone */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + 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_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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + 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; + 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 = 15.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-phone"; + }; + A1B2C3D4E5F6000000000013 /* Debug-phone */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.code418.postboxGame; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Debug-phone"; + }; + A1B2C3D4E5F6000000000014 /* Release-phone */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.code418.postboxGame; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release-phone"; + }; + A1B2C3D4E5F6000000000015 /* Profile-phone */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = S8QB4VV633; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.code418.postboxGame; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Profile-phone"; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -497,6 +728,9 @@ 97C147031CF9000F007C117D /* Debug */, 97C147041CF9000F007C117D /* Release */, 249021D3217E4FDB00AE95B9 /* Profile */, + A1B2C3D4E5F6000000000010 /* Debug-phone */, + A1B2C3D4E5F6000000000011 /* Release-phone */, + A1B2C3D4E5F6000000000012 /* Profile-phone */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -507,6 +741,9 @@ 97C147061CF9000F007C117D /* Debug */, 97C147071CF9000F007C117D /* Release */, 249021D4217E4FDB00AE95B9 /* Profile */, + A1B2C3D4E5F6000000000013 /* Debug-phone */, + A1B2C3D4E5F6000000000014 /* Release-phone */, + A1B2C3D4E5F6000000000015 /* Profile-phone */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/phone.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/phone.xcscheme new file mode 100644 index 00000000..815e66e5 --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/phone.xcscheme @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +