Skip to content

Commit 45a4573

Browse files
[file_selector] Add support for SPM (flutter#6672)
Adjusts the structure of the iOS and macOS implementations to match SPM layout conventions, adds the SPM package specifications, and updates the podspecs to reflect the new paths to keep compatibility with Cocoapods. Does not include any Xcode project updates, in order to preserve compatibility with stable. Fixes flutter#146903
1 parent ca01168 commit 45a4573

22 files changed

+88
-12
lines changed

packages/file_selector/file_selector_ios/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.5.2
2+
3+
* Adds Swift Package Manager compatibility.
4+
15
## 0.5.1+9
26

37
* Adjusts implementation for testabiity.

packages/file_selector/file_selector_ios/ios/Assets/.gitkeep

Whitespace-only changes.

packages/file_selector/file_selector_ios/ios/file_selector_ios.podspec

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ Displays the native iOS document picker.
1313
s.license = { :type => 'BSD', :file => '../LICENSE' }
1414
s.author = { 'Flutter Dev Team' => '[email protected]' }
1515
s.source = { :http => 'https://github.com/flutter/packages/tree/main/packages/file_selector/file_selector_ios' }
16-
s.source_files = 'Classes/**/*.{h,m}'
17-
s.module_map = 'Classes/FileSelectorPlugin.modulemap'
16+
s.source_files = 'file_selector_ios/Sources/file_selector_ios/**/*.{h,m}'
17+
s.module_map = 'file_selector_ios/Sources/file_selector_ios/include/cocoapods_file_selector_ios.modulemap'
1818
s.dependency 'Flutter'
1919
s.platform = :ios, '12.0'
2020
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' }
2121
s.swift_version = '5.0'
22-
s.resource_bundles = {'file_selector_ios_privacy' => ['Resources/PrivacyInfo.xcprivacy']}
22+
s.resource_bundles = {'file_selector_ios_privacy' => ['file_selector_ios/Sources/file_selector_ios/Resources/PrivacyInfo.xcprivacy']}
2323
end
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// swift-tools-version: 5.9
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
// Copyright 2013 The Flutter Authors. All rights reserved.
5+
// Use of this source code is governed by a BSD-style license that can be
6+
// found in the LICENSE file.
7+
8+
import PackageDescription
9+
10+
let package = Package(
11+
name: "file_selector_ios",
12+
platforms: [
13+
.iOS("12.0")
14+
],
15+
products: [
16+
.library(name: "file-selector-ios", targets: ["file_selector_ios"])
17+
],
18+
dependencies: [],
19+
targets: [
20+
.target(
21+
name: "file_selector_ios",
22+
dependencies: [],
23+
exclude: ["include/cocoapods_file_selector_ios.modulemap"],
24+
resources: [
25+
.process("Resources")
26+
],
27+
cSettings: [
28+
.headerSearchPath("include/file_selector_ios")
29+
]
30+
)
31+
]
32+
)

packages/file_selector/file_selector_ios/ios/Classes/FFSFileSelectorPlugin.m renamed to packages/file_selector/file_selector_ios/ios/file_selector_ios/Sources/file_selector_ios/FFSFileSelectorPlugin.m

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
// found in the LICENSE file.
44

55
#import "FFSFileSelectorPlugin.h"
6+
7+
#import "./include/file_selector_ios/messages.g.h"
68
#import "FFSFileSelectorPlugin_Test.h"
7-
#import "messages.g.h"
89

910
#import <objc/runtime.h>
1011

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module file_selector_ios {
2+
umbrella header "file_selector_ios/file_selector_ios-umbrella.h"
3+
4+
export *
5+
module * { export * }
6+
7+
explicit module Test {
8+
header "file_selector_ios/FFSFileSelectorPlugin_Test.h"
9+
}
10+
}

packages/file_selector/file_selector_ios/ios/Classes/messages.g.m renamed to packages/file_selector/file_selector_ios/ios/file_selector_ios/Sources/file_selector_ios/messages.g.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
// Autogenerated from Pigeon (v13.0.0), do not edit directly.
55
// See also: https://pub.dev/packages/pigeon
66

7-
#import "messages.g.h"
7+
#import "./include/file_selector_ios/messages.g.h"
88

99
#if TARGET_OS_OSX
1010
#import <FlutterMacOS/FlutterMacOS.h>

packages/file_selector/file_selector_ios/pigeons/messages.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ import 'package:pigeon/pigeon.dart';
77
@ConfigurePigeon(PigeonOptions(
88
dartOut: 'lib/src/messages.g.dart',
99
dartTestOut: 'test/test_api.g.dart',
10-
objcHeaderOut: 'ios/Classes/messages.g.h',
11-
objcSourceOut: 'ios/Classes/messages.g.m',
10+
objcHeaderOut:
11+
'ios/file_selector_ios/Sources/file_selector_ios/include/file_selector_ios/messages.g.h',
12+
objcSourceOut: 'ios/file_selector_ios/Sources/file_selector_ios/messages.g.m',
1213
objcOptions: ObjcOptions(
1314
prefix: 'FFS',
15+
headerIncludePath: './include/file_selector_ios/messages.g.h',
1416
),
1517
copyrightHeader: 'pigeons/copyright.txt',
1618
))

packages/file_selector/file_selector_ios/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: file_selector_ios
22
description: iOS implementation of the file_selector plugin.
33
repository: https://github.com/flutter/packages/tree/main/packages/file_selector/file_selector_ios
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+file_selector%22
5-
version: 0.5.1+9
5+
version: 0.5.2
66

77
environment:
88
sdk: ^3.2.3

packages/file_selector/file_selector_macos/CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
## NEXT
1+
## 0.9.4
22

3+
* Adds Swift Package Manager compatibility.
34
* Updates minimum supported SDK version to Flutter 3.13/Dart 3.1.
45

56
## 0.9.3+3

packages/file_selector/file_selector_macos/macos/file_selector_macos.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Displays native macOS open and save panels.
1212
s.homepage = 'https://github.com/flutter/packages/tree/main/packages/file_selector'
1313
s.author = { 'Flutter Dev Team' => '[email protected]' }
1414
s.source = { :http => 'https://github.com/flutter/packages/tree/main/packages/file_selector/file_selector_macos' }
15-
s.source_files = 'Classes/**/*'
15+
s.source_files = 'file_selector_macos/Sources/file_selector_macos/**/*.swift'
1616
s.dependency 'FlutterMacOS'
1717

1818
s.platform = :osx, '10.14'
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// swift-tools-version: 5.9
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
// Copyright 2013 The Flutter Authors. All rights reserved.
5+
// Use of this source code is governed by a BSD-style license that can be
6+
// found in the LICENSE file.
7+
8+
import PackageDescription
9+
10+
let package = Package(
11+
name: "file_selector_macos",
12+
platforms: [
13+
.macOS("10.14")
14+
],
15+
products: [
16+
.library(name: "file-selector-macos", targets: ["file_selector_macos"])
17+
],
18+
dependencies: [],
19+
targets: [
20+
.target(
21+
name: "file_selector_macos",
22+
dependencies: []
23+
)
24+
]
25+
)

packages/file_selector/file_selector_macos/pigeons/messages.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import 'package:pigeon/pigeon.dart';
55

66
@ConfigurePigeon(PigeonOptions(
77
input: 'pigeons/messages.dart',
8-
swiftOut: 'macos/Classes/messages.g.swift',
8+
swiftOut:
9+
'macos/file_selector_macos/Sources/file_selector_macos/messages.g.swift',
910
dartOut: 'lib/src/messages.g.dart',
1011
dartTestOut: 'test/messages_test.g.dart',
1112
copyrightHeader: 'pigeons/copyright.txt',

packages/file_selector/file_selector_macos/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: file_selector_macos
22
description: macOS implementation of the file_selector plugin.
33
repository: https://github.com/flutter/packages/tree/main/packages/file_selector/file_selector_macos
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+file_selector%22
5-
version: 0.9.3+3
5+
version: 0.9.4
66

77
environment:
88
sdk: ^3.1.0

0 commit comments

Comments
 (0)