From 04b67942b56ad51bf1bfa150cc23dd74198eb4be Mon Sep 17 00:00:00 2001 From: Jenn Magder Date: Thu, 2 Mar 2023 11:01:57 -0800 Subject: [PATCH] [file_selector] Update minimum Flutter version to 3.3 and iOS 11 (#3325) --- .../file_selector/file_selector/CHANGELOG.md | 4 ++ .../file_selector/file_selector/README.md | 6 +- .../ios/Runner.xcodeproj/project.pbxproj | 69 +++++++++++++++++++ .../contents.xcworkspacedata | 3 + .../file_selector/file_selector/pubspec.yaml | 2 +- .../file_selector_ios/CHANGELOG.md | 4 ++ .../ios/Runner.xcodeproj/project.pbxproj | 1 + .../ios/RunnerTests/FileSelectorTests.m | 22 ------ .../ios/Classes/FFSFileSelectorPlugin.m | 14 +--- .../ios/file_selector_ios.podspec | 6 +- .../file_selector_ios/pubspec.yaml | 6 +- 11 files changed, 91 insertions(+), 46 deletions(-) diff --git a/packages/file_selector/file_selector/CHANGELOG.md b/packages/file_selector/file_selector/CHANGELOG.md index f747cb640529..74b051572712 100644 --- a/packages/file_selector/file_selector/CHANGELOG.md +++ b/packages/file_selector/file_selector/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.2+4 + +* Updates iOS minimum version in README. + ## 0.9.2+3 * Updates links for the merge of flutter/plugins into flutter/packages. diff --git a/packages/file_selector/file_selector/README.md b/packages/file_selector/file_selector/README.md index 938e796b879c..d5878e2d268b 100644 --- a/packages/file_selector/file_selector/README.md +++ b/packages/file_selector/file_selector/README.md @@ -6,9 +6,9 @@ A Flutter plugin that manages files and interactions with file dialogs. -| | iOS | Linux | macOS | Web | Windows | -|-------------|--------|-------|--------|-----|-------------| -| **Support** | iOS 9+ | Any | 10.11+ | Any | Windows 10+ | +| | iOS | Linux | macOS | Web | Windows | +|-------------|---------|-------|--------|-----|-------------| +| **Support** | iOS 11+ | Any | 10.11+ | Any | Windows 10+ | ## Usage diff --git a/packages/file_selector/file_selector/example/ios/Runner.xcodeproj/project.pbxproj b/packages/file_selector/file_selector/example/ios/Runner.xcodeproj/project.pbxproj index fe3d67b222fe..28ce9b91b4df 100644 --- a/packages/file_selector/file_selector/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/file_selector/file_selector/example/ios/Runner.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 60A7CC0D9DBA65FFCA53D36F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 682AABBBC8FE68C4C5B4A6AA /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; @@ -32,6 +33,8 @@ 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 4B7E5ACCE3F2978378E88F91 /* 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 = ""; }; + 682AABBBC8FE68C4C5B4A6AA /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -42,6 +45,8 @@ 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 = ""; }; + B36E3926B64867EDB87D551F /* 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 = ""; }; + D5393CFAB2F68411C1AFA702 /* 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 */ /* Begin PBXFrameworksBuildPhase section */ @@ -49,12 +54,32 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 60A7CC0D9DBA65FFCA53D36F /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 015F2F1DEA561B08B815E4B6 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 682AABBBC8FE68C4C5B4A6AA /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 41F8DF2F792A165075528D28 /* Pods */ = { + isa = PBXGroup; + children = ( + D5393CFAB2F68411C1AFA702 /* Pods-Runner.debug.xcconfig */, + B36E3926B64867EDB87D551F /* Pods-Runner.release.xcconfig */, + 4B7E5ACCE3F2978378E88F91 /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -72,6 +97,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + 41F8DF2F792A165075528D28 /* Pods */, + 015F2F1DEA561B08B815E4B6 /* Frameworks */, ); sourceTree = ""; }; @@ -105,12 +132,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + A0D416CFEC051084A2A30D36 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 44A901AECD8804EE875841B6 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -176,6 +205,7 @@ files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( @@ -184,6 +214,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 44A901AECD8804EE875841B6 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -199,6 +246,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + A0D416CFEC051084A2A30D36 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ diff --git a/packages/file_selector/file_selector/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/file_selector/file_selector/example/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a16ed0f..21a3cc14c74e 100644 --- a/packages/file_selector/file_selector/example/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/packages/file_selector/file_selector/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + + diff --git a/packages/file_selector/file_selector/pubspec.yaml b/packages/file_selector/file_selector/pubspec.yaml index b29fddd33bb6..540635f76afe 100644 --- a/packages/file_selector/file_selector/pubspec.yaml +++ b/packages/file_selector/file_selector/pubspec.yaml @@ -3,7 +3,7 @@ description: Flutter plugin for opening and saving files, or selecting directories, using native file selection UI. repository: https://github.com/flutter/packages/tree/main/packages/file_selector/file_selector issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+file_selector%22 -version: 0.9.2+3 +version: 0.9.2+4 environment: sdk: ">=2.12.0 <3.0.0" diff --git a/packages/file_selector/file_selector_ios/CHANGELOG.md b/packages/file_selector/file_selector_ios/CHANGELOG.md index 77c1f7dc3189..83ee72a20ce6 100644 --- a/packages/file_selector/file_selector_ios/CHANGELOG.md +++ b/packages/file_selector/file_selector_ios/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.1 + +* Updates minimum Flutter version to 3.3 and iOS 11. + ## 0.5.0+3 * Updates links for the merge of flutter/plugins into flutter/packages. diff --git a/packages/file_selector/file_selector_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/file_selector/file_selector_ios/example/ios/Runner.xcodeproj/project.pbxproj index e21f78a55c1b..839d7f7e100d 100644 --- a/packages/file_selector/file_selector_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/file_selector/file_selector_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -276,6 +276,7 @@ files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( diff --git a/packages/file_selector/file_selector_ios/example/ios/RunnerTests/FileSelectorTests.m b/packages/file_selector/file_selector_ios/example/ios/RunnerTests/FileSelectorTests.m index a32622a6afef..c52aad59f585 100644 --- a/packages/file_selector/file_selector_ios/example/ios/RunnerTests/FileSelectorTests.m +++ b/packages/file_selector/file_selector_ios/example/ios/RunnerTests/FileSelectorTests.m @@ -55,28 +55,6 @@ - (void)testReturnsPickedFiles { [self waitForExpectationsWithTimeout:1.0 handler:nil]; } -- (void)testReturnsPickedFileLegacy { - // Tests that it handles the pre iOS 11 UIDocumentPickerDelegate method. - FFSFileSelectorPlugin *plugin = [[FFSFileSelectorPlugin alloc] init]; - XCTestExpectation *completionWasCalled = [self expectationWithDescription:@"completion"]; - UIDocumentPickerViewController *picker = - [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[] - inMode:UIDocumentPickerModeImport]; - plugin.documentPickerViewControllerOverride = picker; - [plugin openFileSelectorWithConfig:[FFSFileSelectorConfig makeWithUtis:@[] - allowMultiSelection:@NO] - completion:^(NSArray *paths, FlutterError *error) { - NSArray *expectedPaths = @[ @"/file1.txt" ]; - XCTAssertEqualObjects(paths, expectedPaths); - [completionWasCalled fulfill]; - }]; -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - [plugin documentPicker:picker didPickDocumentAtURL:[NSURL URLWithString:@"file:///file1.txt"]]; -#pragma GCC diagnostic pop - [self waitForExpectationsWithTimeout:1.0 handler:nil]; -} - - (void)testCancellingPickerReturnsNil { FFSFileSelectorPlugin *plugin = [[FFSFileSelectorPlugin alloc] init]; UIDocumentPickerViewController *picker = diff --git a/packages/file_selector/file_selector_ios/ios/Classes/FFSFileSelectorPlugin.m b/packages/file_selector/file_selector_ios/ios/Classes/FFSFileSelectorPlugin.m index e77585ad3a17..8a92cc3131c5 100644 --- a/packages/file_selector/file_selector_ios/ios/Classes/FFSFileSelectorPlugin.m +++ b/packages/file_selector/file_selector_ios/ios/Classes/FFSFileSelectorPlugin.m @@ -21,9 +21,7 @@ - (void)openFileSelectorWithConfig:(FFSFileSelectorConfig *)config initWithDocumentTypes:config.utis inMode:UIDocumentPickerModeImport]; documentPicker.delegate = self; - if (@available(iOS 11.0, *)) { - documentPicker.allowsMultipleSelection = config.allowMultiSelection.boolValue; - } + documentPicker.allowsMultipleSelection = config.allowMultiSelection.boolValue; UIViewController *presentingVC = self.presentingViewControllerOverride @@ -48,16 +46,6 @@ + (void)registerWithRegistrar:(NSObject *)registrar { #pragma mark - UIDocumentPickerDelegate -// This method is only called in iOS < 11.0. The new codepath is -// documentPicker:didPickDocumentsAtURLs:, implemented below. -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-implementations" -- (void)documentPicker:(UIDocumentPickerViewController *)controller - didPickDocumentAtURL:(NSURL *)url { - [self sendBackResults:@[ url.path ] error:nil forPicker:controller]; -} -#pragma clang diagnostic pop - - (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray *)urls { NSMutableArray *paths = [NSMutableArray arrayWithCapacity:urls.count]; diff --git a/packages/file_selector/file_selector_ios/ios/file_selector_ios.podspec b/packages/file_selector/file_selector_ios/ios/file_selector_ios.podspec index 59c6f1560050..fe22d0e67b66 100644 --- a/packages/file_selector/file_selector_ios/ios/file_selector_ios.podspec +++ b/packages/file_selector/file_selector_ios/ios/file_selector_ios.podspec @@ -16,9 +16,7 @@ Displays the native iOS document picker. s.source_files = 'Classes/**/*.{h,m}' s.module_map = 'Classes/FileSelectorPlugin.modulemap' s.dependency 'Flutter' - s.platform = :ios, '9.0' - - # Flutter.framework does not contain a i386 slice. - s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } + s.platform = :ios, '11.0' + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } s.swift_version = '5.0' end diff --git a/packages/file_selector/file_selector_ios/pubspec.yaml b/packages/file_selector/file_selector_ios/pubspec.yaml index efebc0116222..53123821c9dc 100644 --- a/packages/file_selector/file_selector_ios/pubspec.yaml +++ b/packages/file_selector/file_selector_ios/pubspec.yaml @@ -2,11 +2,11 @@ name: file_selector_ios description: iOS implementation of the file_selector plugin. repository: https://github.com/flutter/packages/tree/main/packages/file_selector/file_selector_ios issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+file_selector%22 -version: 0.5.0+3 +version: 0.5.1 environment: - sdk: ">=2.14.4 <3.0.0" - flutter: ">=3.0.0" + sdk: ">=2.18.0 <3.0.0" + flutter: ">=3.3.0" flutter: plugin: