From b9665cfed44bbf2731d4f04b3a96394c37cc77f5 Mon Sep 17 00:00:00 2001 From: Hiroshi Horie <548776+hiroshihorie@users.noreply.github.com> Date: Tue, 28 Jul 2026 21:46:57 +0900 Subject: [PATCH 1/3] feat: add Swift Package Manager support for iOS and macOS Adds ios/livekit_client and macos/livekit_client Swift packages using the Flutter SPM plugin layout. Sources are symlinks into shared_swift and ios/Classes so they stay the single source of truth. CocoaPods integration is unchanged and both podspecs keep working as before. The packages depend on flutter_webrtc's Swift package for the WebRTC framework, mirroring the podspec dependency. Requires a flutter_webrtc release that includes its own SPM support (PR 2062). --- ios/livekit_client/Package.swift | 27 +++++++++++++++++++ .../livekit_client/AVAudioPCMBuffer.swift | 1 + .../livekit_client/AudioConverter.swift | 1 + .../livekit_client/AudioProcessing.swift | 1 + .../livekit_client/AudioRenderer.swift | 1 + .../Sources/livekit_client/AudioTrack.swift | 1 + .../livekit_client/BroadcastBundleInfo.swift | 1 + .../livekit_client/BroadcastManager.swift | 1 + .../Sources/livekit_client/BundleInfo.swift | 1 + .../DarwinNotificationCenter.swift | 1 + .../Sources/livekit_client/FFTProcessor.swift | 1 + .../livekit_client/LiveKitPlugin.swift | 1 + .../livekit_client/LocalAudioTrack.swift | 1 + .../livekit_client/RemoteAudioTrack.swift | 1 + .../Sources/livekit_client/RingBuffer.swift | 1 + .../Sources/livekit_client/Track.swift | 1 + .../Sources/livekit_client/Visualizer.swift | 1 + macos/livekit_client/Package.swift | 27 +++++++++++++++++++ .../livekit_client/AVAudioPCMBuffer.swift | 1 + .../livekit_client/AudioConverter.swift | 1 + .../livekit_client/AudioProcessing.swift | 1 + .../livekit_client/AudioRenderer.swift | 1 + .../Sources/livekit_client/AudioTrack.swift | 1 + .../Sources/livekit_client/FFTProcessor.swift | 1 + .../livekit_client/LiveKitPlugin.swift | 1 + .../livekit_client/LocalAudioTrack.swift | 1 + .../livekit_client/RemoteAudioTrack.swift | 1 + .../Sources/livekit_client/RingBuffer.swift | 1 + .../Sources/livekit_client/Track.swift | 1 + .../Sources/livekit_client/Visualizer.swift | 1 + 30 files changed, 82 insertions(+) create mode 100644 ios/livekit_client/Package.swift create mode 120000 ios/livekit_client/Sources/livekit_client/AVAudioPCMBuffer.swift create mode 120000 ios/livekit_client/Sources/livekit_client/AudioConverter.swift create mode 120000 ios/livekit_client/Sources/livekit_client/AudioProcessing.swift create mode 120000 ios/livekit_client/Sources/livekit_client/AudioRenderer.swift create mode 120000 ios/livekit_client/Sources/livekit_client/AudioTrack.swift create mode 120000 ios/livekit_client/Sources/livekit_client/BroadcastBundleInfo.swift create mode 120000 ios/livekit_client/Sources/livekit_client/BroadcastManager.swift create mode 120000 ios/livekit_client/Sources/livekit_client/BundleInfo.swift create mode 120000 ios/livekit_client/Sources/livekit_client/DarwinNotificationCenter.swift create mode 120000 ios/livekit_client/Sources/livekit_client/FFTProcessor.swift create mode 120000 ios/livekit_client/Sources/livekit_client/LiveKitPlugin.swift create mode 120000 ios/livekit_client/Sources/livekit_client/LocalAudioTrack.swift create mode 120000 ios/livekit_client/Sources/livekit_client/RemoteAudioTrack.swift create mode 120000 ios/livekit_client/Sources/livekit_client/RingBuffer.swift create mode 120000 ios/livekit_client/Sources/livekit_client/Track.swift create mode 120000 ios/livekit_client/Sources/livekit_client/Visualizer.swift create mode 100644 macos/livekit_client/Package.swift create mode 120000 macos/livekit_client/Sources/livekit_client/AVAudioPCMBuffer.swift create mode 120000 macos/livekit_client/Sources/livekit_client/AudioConverter.swift create mode 120000 macos/livekit_client/Sources/livekit_client/AudioProcessing.swift create mode 120000 macos/livekit_client/Sources/livekit_client/AudioRenderer.swift create mode 120000 macos/livekit_client/Sources/livekit_client/AudioTrack.swift create mode 120000 macos/livekit_client/Sources/livekit_client/FFTProcessor.swift create mode 120000 macos/livekit_client/Sources/livekit_client/LiveKitPlugin.swift create mode 120000 macos/livekit_client/Sources/livekit_client/LocalAudioTrack.swift create mode 120000 macos/livekit_client/Sources/livekit_client/RemoteAudioTrack.swift create mode 120000 macos/livekit_client/Sources/livekit_client/RingBuffer.swift create mode 120000 macos/livekit_client/Sources/livekit_client/Track.swift create mode 120000 macos/livekit_client/Sources/livekit_client/Visualizer.swift diff --git a/ios/livekit_client/Package.swift b/ios/livekit_client/Package.swift new file mode 100644 index 000000000..8929b3269 --- /dev/null +++ b/ios/livekit_client/Package.swift @@ -0,0 +1,27 @@ +// swift-tools-version: 5.9 +import PackageDescription + +let package = Package( + name: "livekit_client", + platforms: [ + .iOS("13.0") + ], + products: [ + .library(name: "livekit-client", targets: ["livekit_client"]) + ], + dependencies: [ + .package(name: "FlutterFramework", path: "../FlutterFramework"), + // Resolved by the Flutter tool to the flutter_webrtc plugin package. + .package(name: "flutter_webrtc", path: "../flutter_webrtc") + ], + targets: [ + .target( + name: "livekit_client", + dependencies: [ + .product(name: "FlutterFramework", package: "FlutterFramework"), + .product(name: "flutter-webrtc", package: "flutter_webrtc"), + .product(name: "WebRTC", package: "flutter_webrtc") + ] + ) + ] +) diff --git a/ios/livekit_client/Sources/livekit_client/AVAudioPCMBuffer.swift b/ios/livekit_client/Sources/livekit_client/AVAudioPCMBuffer.swift new file mode 120000 index 000000000..2bf923abe --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/AVAudioPCMBuffer.swift @@ -0,0 +1 @@ +../../../../shared_swift/AVAudioPCMBuffer.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/AudioConverter.swift b/ios/livekit_client/Sources/livekit_client/AudioConverter.swift new file mode 120000 index 000000000..43a0164d4 --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/AudioConverter.swift @@ -0,0 +1 @@ +../../../../shared_swift/AudioConverter.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/AudioProcessing.swift b/ios/livekit_client/Sources/livekit_client/AudioProcessing.swift new file mode 120000 index 000000000..58d6803d7 --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/AudioProcessing.swift @@ -0,0 +1 @@ +../../../../shared_swift/AudioProcessing.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/AudioRenderer.swift b/ios/livekit_client/Sources/livekit_client/AudioRenderer.swift new file mode 120000 index 000000000..56a622603 --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/AudioRenderer.swift @@ -0,0 +1 @@ +../../../../shared_swift/AudioRenderer.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/AudioTrack.swift b/ios/livekit_client/Sources/livekit_client/AudioTrack.swift new file mode 120000 index 000000000..4cf2512a0 --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/AudioTrack.swift @@ -0,0 +1 @@ +../../../../shared_swift/AudioTrack.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/BroadcastBundleInfo.swift b/ios/livekit_client/Sources/livekit_client/BroadcastBundleInfo.swift new file mode 120000 index 000000000..4a7d889dd --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/BroadcastBundleInfo.swift @@ -0,0 +1 @@ +../../../Classes/BroadcastBundleInfo.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/BroadcastManager.swift b/ios/livekit_client/Sources/livekit_client/BroadcastManager.swift new file mode 120000 index 000000000..9a9c93488 --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/BroadcastManager.swift @@ -0,0 +1 @@ +../../../Classes/BroadcastManager.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/BundleInfo.swift b/ios/livekit_client/Sources/livekit_client/BundleInfo.swift new file mode 120000 index 000000000..70e7346e2 --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/BundleInfo.swift @@ -0,0 +1 @@ +../../../Classes/BundleInfo.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/DarwinNotificationCenter.swift b/ios/livekit_client/Sources/livekit_client/DarwinNotificationCenter.swift new file mode 120000 index 000000000..6dedcde95 --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/DarwinNotificationCenter.swift @@ -0,0 +1 @@ +../../../Classes/DarwinNotificationCenter.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/FFTProcessor.swift b/ios/livekit_client/Sources/livekit_client/FFTProcessor.swift new file mode 120000 index 000000000..ed0740ecf --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/FFTProcessor.swift @@ -0,0 +1 @@ +../../../../shared_swift/FFTProcessor.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/LiveKitPlugin.swift b/ios/livekit_client/Sources/livekit_client/LiveKitPlugin.swift new file mode 120000 index 000000000..c6f02a2d8 --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/LiveKitPlugin.swift @@ -0,0 +1 @@ +../../../../shared_swift/LiveKitPlugin.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/LocalAudioTrack.swift b/ios/livekit_client/Sources/livekit_client/LocalAudioTrack.swift new file mode 120000 index 000000000..d8c965d64 --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/LocalAudioTrack.swift @@ -0,0 +1 @@ +../../../../shared_swift/LocalAudioTrack.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/RemoteAudioTrack.swift b/ios/livekit_client/Sources/livekit_client/RemoteAudioTrack.swift new file mode 120000 index 000000000..4d508bc77 --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/RemoteAudioTrack.swift @@ -0,0 +1 @@ +../../../../shared_swift/RemoteAudioTrack.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/RingBuffer.swift b/ios/livekit_client/Sources/livekit_client/RingBuffer.swift new file mode 120000 index 000000000..d708ad39b --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/RingBuffer.swift @@ -0,0 +1 @@ +../../../../shared_swift/RingBuffer.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/Track.swift b/ios/livekit_client/Sources/livekit_client/Track.swift new file mode 120000 index 000000000..aac8b8f9c --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/Track.swift @@ -0,0 +1 @@ +../../../../shared_swift/Track.swift \ No newline at end of file diff --git a/ios/livekit_client/Sources/livekit_client/Visualizer.swift b/ios/livekit_client/Sources/livekit_client/Visualizer.swift new file mode 120000 index 000000000..89565b584 --- /dev/null +++ b/ios/livekit_client/Sources/livekit_client/Visualizer.swift @@ -0,0 +1 @@ +../../../../shared_swift/Visualizer.swift \ No newline at end of file diff --git a/macos/livekit_client/Package.swift b/macos/livekit_client/Package.swift new file mode 100644 index 000000000..8d3bb7b7a --- /dev/null +++ b/macos/livekit_client/Package.swift @@ -0,0 +1,27 @@ +// swift-tools-version: 5.9 +import PackageDescription + +let package = Package( + name: "livekit_client", + platforms: [ + .macOS("10.15") + ], + products: [ + .library(name: "livekit-client", targets: ["livekit_client"]) + ], + dependencies: [ + .package(name: "FlutterFramework", path: "../FlutterFramework"), + // Resolved by the Flutter tool to the flutter_webrtc plugin package. + .package(name: "flutter_webrtc", path: "../flutter_webrtc") + ], + targets: [ + .target( + name: "livekit_client", + dependencies: [ + .product(name: "FlutterFramework", package: "FlutterFramework"), + .product(name: "flutter-webrtc", package: "flutter_webrtc"), + .product(name: "WebRTC", package: "flutter_webrtc") + ] + ) + ] +) diff --git a/macos/livekit_client/Sources/livekit_client/AVAudioPCMBuffer.swift b/macos/livekit_client/Sources/livekit_client/AVAudioPCMBuffer.swift new file mode 120000 index 000000000..2bf923abe --- /dev/null +++ b/macos/livekit_client/Sources/livekit_client/AVAudioPCMBuffer.swift @@ -0,0 +1 @@ +../../../../shared_swift/AVAudioPCMBuffer.swift \ No newline at end of file diff --git a/macos/livekit_client/Sources/livekit_client/AudioConverter.swift b/macos/livekit_client/Sources/livekit_client/AudioConverter.swift new file mode 120000 index 000000000..43a0164d4 --- /dev/null +++ b/macos/livekit_client/Sources/livekit_client/AudioConverter.swift @@ -0,0 +1 @@ +../../../../shared_swift/AudioConverter.swift \ No newline at end of file diff --git a/macos/livekit_client/Sources/livekit_client/AudioProcessing.swift b/macos/livekit_client/Sources/livekit_client/AudioProcessing.swift new file mode 120000 index 000000000..58d6803d7 --- /dev/null +++ b/macos/livekit_client/Sources/livekit_client/AudioProcessing.swift @@ -0,0 +1 @@ +../../../../shared_swift/AudioProcessing.swift \ No newline at end of file diff --git a/macos/livekit_client/Sources/livekit_client/AudioRenderer.swift b/macos/livekit_client/Sources/livekit_client/AudioRenderer.swift new file mode 120000 index 000000000..56a622603 --- /dev/null +++ b/macos/livekit_client/Sources/livekit_client/AudioRenderer.swift @@ -0,0 +1 @@ +../../../../shared_swift/AudioRenderer.swift \ No newline at end of file diff --git a/macos/livekit_client/Sources/livekit_client/AudioTrack.swift b/macos/livekit_client/Sources/livekit_client/AudioTrack.swift new file mode 120000 index 000000000..4cf2512a0 --- /dev/null +++ b/macos/livekit_client/Sources/livekit_client/AudioTrack.swift @@ -0,0 +1 @@ +../../../../shared_swift/AudioTrack.swift \ No newline at end of file diff --git a/macos/livekit_client/Sources/livekit_client/FFTProcessor.swift b/macos/livekit_client/Sources/livekit_client/FFTProcessor.swift new file mode 120000 index 000000000..ed0740ecf --- /dev/null +++ b/macos/livekit_client/Sources/livekit_client/FFTProcessor.swift @@ -0,0 +1 @@ +../../../../shared_swift/FFTProcessor.swift \ No newline at end of file diff --git a/macos/livekit_client/Sources/livekit_client/LiveKitPlugin.swift b/macos/livekit_client/Sources/livekit_client/LiveKitPlugin.swift new file mode 120000 index 000000000..c6f02a2d8 --- /dev/null +++ b/macos/livekit_client/Sources/livekit_client/LiveKitPlugin.swift @@ -0,0 +1 @@ +../../../../shared_swift/LiveKitPlugin.swift \ No newline at end of file diff --git a/macos/livekit_client/Sources/livekit_client/LocalAudioTrack.swift b/macos/livekit_client/Sources/livekit_client/LocalAudioTrack.swift new file mode 120000 index 000000000..d8c965d64 --- /dev/null +++ b/macos/livekit_client/Sources/livekit_client/LocalAudioTrack.swift @@ -0,0 +1 @@ +../../../../shared_swift/LocalAudioTrack.swift \ No newline at end of file diff --git a/macos/livekit_client/Sources/livekit_client/RemoteAudioTrack.swift b/macos/livekit_client/Sources/livekit_client/RemoteAudioTrack.swift new file mode 120000 index 000000000..4d508bc77 --- /dev/null +++ b/macos/livekit_client/Sources/livekit_client/RemoteAudioTrack.swift @@ -0,0 +1 @@ +../../../../shared_swift/RemoteAudioTrack.swift \ No newline at end of file diff --git a/macos/livekit_client/Sources/livekit_client/RingBuffer.swift b/macos/livekit_client/Sources/livekit_client/RingBuffer.swift new file mode 120000 index 000000000..d708ad39b --- /dev/null +++ b/macos/livekit_client/Sources/livekit_client/RingBuffer.swift @@ -0,0 +1 @@ +../../../../shared_swift/RingBuffer.swift \ No newline at end of file diff --git a/macos/livekit_client/Sources/livekit_client/Track.swift b/macos/livekit_client/Sources/livekit_client/Track.swift new file mode 120000 index 000000000..aac8b8f9c --- /dev/null +++ b/macos/livekit_client/Sources/livekit_client/Track.swift @@ -0,0 +1 @@ +../../../../shared_swift/Track.swift \ No newline at end of file diff --git a/macos/livekit_client/Sources/livekit_client/Visualizer.swift b/macos/livekit_client/Sources/livekit_client/Visualizer.swift new file mode 120000 index 000000000..89565b584 --- /dev/null +++ b/macos/livekit_client/Sources/livekit_client/Visualizer.swift @@ -0,0 +1 @@ +../../../../shared_swift/Visualizer.swift \ No newline at end of file From 2b11ee885ebc68403d71efc76468ab8970856a13 Mon Sep 17 00:00:00 2001 From: Hiroshi Horie <548776+hiroshihorie@users.noreply.github.com> Date: Tue, 28 Jul 2026 22:18:21 +0900 Subject: [PATCH 2/3] chore(example): add Swift Package Manager integration to iOS and macOS projects Mirrors the changes flutter's automatic SPM migration makes (package reference, product dependency, and the prepare pre-action in the Runner scheme). Committing them avoids the migration step at build time, which currently fails to validate projects whose plugins declare SwiftPM dependencies on other plugins. CocoaPods phases are untouched so the example still builds with SPM disabled. --- example/ios/Runner.xcodeproj/project.pbxproj | 42 +++++++++++-------- .../xcshareddata/xcschemes/Runner.xcscheme | 18 ++++++++ .../macos/Runner.xcodeproj/project.pbxproj | 42 +++++++++++-------- .../xcshareddata/xcschemes/Runner.xcscheme | 18 ++++++++ 4 files changed, 84 insertions(+), 36 deletions(-) diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 2836d7d14..a6cd9fa62 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -10,6 +10,7 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; 896215755592B078E91F47B7 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09B43753FB1E220F505A0AA8 /* Pods_Runner.framework */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; @@ -65,6 +66,7 @@ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; 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 = ""; }; + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.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 = ""; }; @@ -92,6 +94,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, 896215755592B078E91F47B7 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -119,6 +122,7 @@ 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 9740EEB21CF90195004384FC /* Debug.xcconfig */, 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, @@ -203,7 +207,6 @@ 9705A1C41CF9048500538489 /* Embed Frameworks */, D7FECD302860997500D04D1C /* Embed App Extensions */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D9316257C44ACC699FF042FD /* [CP] Embed Pods Frameworks */, 846FAB5D745587A695E025C5 /* [CP] Copy Pods Resources */, ); buildRules = ( @@ -212,6 +215,9 @@ D7FECD2E2860997500D04D1C /* PBXTargetDependency */, ); name = Runner; + packageProductDependencies = ( + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, + ); productName = Runner; productReference = 97C146EE1CF9000F007C117D /* Runner.app */; productType = "com.apple.product-type.application"; @@ -262,6 +268,9 @@ Base, ); mainGroup = 97C146E51CF9000F007C117D; + packageReferences = ( + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */, + ); productRefGroup = 97C146EF1CF9000F007C117D /* Products */; projectDirPath = ""; projectRoot = ""; @@ -342,23 +351,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n"; }; - D9316257C44ACC699FF042FD /* [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; - }; F30F68AB50F7F85C7927F195 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -826,6 +818,20 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { + isa = XCSwiftPackageProductDependency; + productName = FlutterGeneratedPluginSwiftPackage; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 97C146E61CF9000F007C117D /* Project object */; } diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 9c12df59c..5db441f58 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -5,6 +5,24 @@ + + + + + + + + + + + + + + + + + + + + Date: Wed, 29 Jul 2026 00:55:31 +0900 Subject: [PATCH 3/3] chore: add changeset --- .changes/swift-package-manager | 1 + 1 file changed, 1 insertion(+) create mode 100644 .changes/swift-package-manager diff --git a/.changes/swift-package-manager b/.changes/swift-package-manager new file mode 100644 index 000000000..b9e80e398 --- /dev/null +++ b/.changes/swift-package-manager @@ -0,0 +1 @@ +minor type="added" "Swift Package Manager support for iOS and macOS. CocoaPods remains fully supported."