From 3aaa86795e053b0d30fdc08374ac4d418a6c2a24 Mon Sep 17 00:00:00 2001 From: Jenn Magder Date: Thu, 15 Feb 2024 16:14:38 -0800 Subject: [PATCH] Update App Clip for Xcode 15 and iOS 16+ (#2162) 1. Run `flutter run` on the project to pick up project automigrations. 2. Set min version to iOS 16 to take advantage of the 15MB size limit (see https://github.com/flutter/flutter/issues/71098#issuecomment-1358152892) 3. Other updates needed to avoid Xcode errors and warnings. First introduced in #538 See also https://github.com/flutter/website/pull/10145 --- ios_app_clip/README.md | 15 +++-- .../ios/Flutter/AppFrameworkInfo.plist | 2 +- ios_app_clip/ios/Podfile | 2 +- .../ios/Runner.xcodeproj/project.pbxproj | 61 +++++++++---------- .../contents.xcworkspacedata | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 10 +-- ios_app_clip/ios/Runner/AppDelegate.swift | 2 +- ios_app_clip/ios/Runner/Info.plist | 4 ++ 8 files changed, 48 insertions(+), 50 deletions(-) diff --git a/ios_app_clip/README.md b/ios_app_clip/README.md index 160597957..e516cab9f 100644 --- a/ios_app_clip/README.md +++ b/ios_app_clip/README.md @@ -1,6 +1,6 @@ # ios_app_clip -A sample project demonstrating integration with iOS 14's App Clip. +A sample project demonstrating integration with iOS App Clip. The App Clip target is rendered by Flutter and uses a plugin. @@ -15,13 +15,12 @@ The App Clip target is rendered by Flutter and uses a plugin. In order to run. -1. `cd ios` -2. `pod install` -3. `open Runner.xcworkspace` -4. Inside Xcode, select the `AppClip` target from the scheme dropdown -5. Select an iOS 14 device -6. Select a development team as needed -7. Press run in Xcode to run +1. `flutter build ios --config-only` +1. `open Runner.xcworkspace` +1. Inside Xcode, select the `AppClip` target from the scheme dropdown +1. Select an iOS 16 or higher device +1. Select a development team as needed +1. Press run in Xcode to run ## Questions/issues diff --git a/ios_app_clip/ios/Flutter/AppFrameworkInfo.plist b/ios_app_clip/ios/Flutter/AppFrameworkInfo.plist index f2872cf47..8c6e56146 100644 --- a/ios_app_clip/ios/Flutter/AppFrameworkInfo.plist +++ b/ios_app_clip/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 9.0 + 12.0 diff --git a/ios_app_clip/ios/Podfile b/ios_app_clip/ios/Podfile index f3b0247c4..52afa6aa9 100644 --- a/ios_app_clip/ios/Podfile +++ b/ios_app_clip/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '9.0' +# platform :ios, '12.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ios_app_clip/ios/Runner.xcodeproj/project.pbxproj b/ios_app_clip/ios/Runner.xcodeproj/project.pbxproj index 1fe24fabf..5b14651a3 100644 --- a/ios_app_clip/ios/Runner.xcodeproj/project.pbxproj +++ b/ios_app_clip/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -197,6 +197,7 @@ 0A48A2562508B57F0036A529 /* Frameworks */, 0A48A2572508B57F0036A529 /* Resources */, 0A48A2792508C8F70036A529 /* Embed Flutter */, + 1999EAF6C873AB834CA4DC07 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -217,8 +218,8 @@ 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, - 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 0A48A26E2508B57F0036A529 /* Embed App Clips */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, CF23DA206BDE2D699E40B8E8 /* [CP] Embed Pods Frameworks */, ); buildRules = ( @@ -238,7 +239,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 1200; - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1530; ORGANIZATIONNAME = ""; TargetAttributes = { 0A48A2582508B57F0036A529 = { @@ -296,6 +297,7 @@ /* Begin PBXShellScriptBuildPhase section */ 0A48A2782508C8E40036A529 /* Build Flutter */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -314,6 +316,7 @@ }; 0A48A2792508C8F70036A529 /* Embed Flutter */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -330,12 +333,31 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin\n"; }; + 1999EAF6C873AB834CA4DC07 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-AppClip/Pods-AppClip-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-AppClip/Pods-AppClip-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AppClip/Pods-AppClip-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( @@ -390,6 +412,7 @@ }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -400,7 +423,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n"; }; CF23DA206BDE2D699E40B8E8 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; @@ -475,7 +498,6 @@ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_ENABLE_OBJC_WEAK = YES; @@ -484,15 +506,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = AppClip/AppClip.entitlements; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(PROJECT_DIR)/Flutter", - "$(inherited)", - ); GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = AppClip/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -514,7 +530,6 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_ENABLE_OBJC_WEAK = YES; @@ -523,15 +538,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = AppClip/AppClip.entitlements; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(PROJECT_DIR)/Flutter", - "$(inherited)", - ); GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = AppClip/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -550,7 +559,6 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_ENABLE_OBJC_WEAK = YES; @@ -559,15 +567,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = AppClip/AppClip.entitlements; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(PROJECT_DIR)/Flutter", - "$(inherited)", - ); GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = AppClip/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -622,7 +624,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -640,7 +642,6 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/AppClip.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -710,7 +711,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -759,7 +760,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -779,7 +780,6 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/AppClip.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -812,7 +812,6 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/AppClip.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", diff --git a/ios_app_clip/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios_app_clip/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 1d526a16e..919434a62 100644 --- a/ios_app_clip/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/ios_app_clip/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/ios_app_clip/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios_app_clip/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140cfd..fcac53479 100644 --- a/ios_app_clip/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios_app_clip/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ - - - - + + - - + CADisableMinimumFrameDurationOnPhone + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable @@ -22,6 +24,8 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS + UIApplicationSupportsIndirectInputEvents + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile