From 5b92a5189a70698cef0e10bc7c123d3f707df6d3 Mon Sep 17 00:00:00 2001 From: Sunita Prajapati Date: Wed, 12 Aug 2026 14:57:10 +0530 Subject: [PATCH 1/2] fix: correct Package.swift to properly declare SPM support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add linkedFramework linker settings, use hyphenated library product name, and set static library type — matching the pattern required for Flutter's tooling to detect SPM support and avoid falling back to CocoaPods. --- packages/core/ios/Package.swift | 10 ++++++---- packages/core/macos/Package.swift | 8 +++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/core/ios/Package.swift b/packages/core/ios/Package.swift index 2fd53b4..28762e7 100644 --- a/packages/core/ios/Package.swift +++ b/packages/core/ios/Package.swift @@ -9,14 +9,16 @@ let package = Package( .iOS("12.0"), ], products: [ - .library(name: "segment_analytics", targets: ["segment_analytics"]), + .library(name: "segment-analytics", type: .static, targets: ["segment_analytics"]), ], - dependencies: [], targets: [ .target( name: "segment_analytics", dependencies: [], - path: "Classes" + path: "Classes", + linkerSettings: [ + .linkedFramework("Flutter", .when(platforms: [.iOS])), + ] ), ] -) \ No newline at end of file +) diff --git a/packages/core/macos/Package.swift b/packages/core/macos/Package.swift index 2d10bd3..022f5b3 100644 --- a/packages/core/macos/Package.swift +++ b/packages/core/macos/Package.swift @@ -9,14 +9,16 @@ let package = Package( .macOS("10.14"), ], products: [ - .library(name: "segment_analytics", targets: ["segment_analytics"]), + .library(name: "segment-analytics", type: .static, targets: ["segment_analytics"]), ], - dependencies: [], targets: [ .target( name: "segment_analytics", dependencies: [], - path: "Classes" + path: "Classes", + linkerSettings: [ + .linkedFramework("FlutterMacOS", .when(platforms: [.macOS])), + ] ), ] ) From 3b99cafd2443fa24bcfe2684ecabbeef544a5e04 Mon Sep 17 00:00:00 2001 From: Sunita Prajapati Date: Thu, 13 Aug 2026 10:01:43 +0530 Subject: [PATCH 2/2] fix: migrate iOS/macOS to correct SPM structure per Flutter 3.44 docs Rewrites the Swift Package Manager integration for iOS and macOS to follow Flutter's official plugin migration guide for Flutter 3.44+. --- packages/core/build_pigeon_plugins.sh | 4 ++-- packages/core/devtools_options.yaml | 3 +++ packages/core/ios/.gitignore | 5 ++++- packages/core/ios/segment_analytics.podspec | 2 +- .../core/ios/{ => segment_analytics}/Package.swift | 13 +++++++------ .../segment_analytics}/AnalyticsPlugin.swift | 0 .../Sources/segment_analytics}/AppleUtils.swift | 0 .../Sources/segment_analytics}/Context.swift | 0 .../Sources/segment_analytics}/LinuxUtils.swift | 0 .../Sources/segment_analytics}/VendorSystem.swift | 0 packages/core/lib/state.dart | 2 +- packages/core/macos/.gitignore | 2 ++ packages/core/macos/segment_analytics.podspec | 2 +- .../macos/{ => segment_analytics}/Package.swift | 11 ++++++----- .../segment_analytics}/AnalyticsPlugin.swift | 0 .../Sources/segment_analytics}/AppleUtils.swift | 0 .../Sources/segment_analytics}/Context.swift | 0 .../Sources/segment_analytics}/LinuxUtils.swift | 0 .../Sources/segment_analytics}/VendorSystem.swift | 0 19 files changed, 27 insertions(+), 17 deletions(-) create mode 100644 packages/core/devtools_options.yaml rename packages/core/ios/{ => segment_analytics}/Package.swift (53%) rename packages/core/ios/{Classes => segment_analytics/Sources/segment_analytics}/AnalyticsPlugin.swift (100%) rename packages/core/ios/{Classes => segment_analytics/Sources/segment_analytics}/AppleUtils.swift (100%) rename packages/core/ios/{Classes => segment_analytics/Sources/segment_analytics}/Context.swift (100%) rename packages/core/ios/{Classes => segment_analytics/Sources/segment_analytics}/LinuxUtils.swift (100%) rename packages/core/ios/{Classes => segment_analytics/Sources/segment_analytics}/VendorSystem.swift (100%) create mode 100644 packages/core/macos/.gitignore rename packages/core/macos/{ => segment_analytics}/Package.swift (57%) rename packages/core/macos/{Classes => segment_analytics/Sources/segment_analytics}/AnalyticsPlugin.swift (100%) rename packages/core/macos/{Classes => segment_analytics/Sources/segment_analytics}/AppleUtils.swift (100%) rename packages/core/macos/{Classes => segment_analytics/Sources/segment_analytics}/Context.swift (100%) rename packages/core/macos/{Classes => segment_analytics/Sources/segment_analytics}/LinuxUtils.swift (100%) rename packages/core/macos/{Classes => segment_analytics/Sources/segment_analytics}/VendorSystem.swift (100%) diff --git a/packages/core/build_pigeon_plugins.sh b/packages/core/build_pigeon_plugins.sh index de4abda..c3a6ca8 100755 --- a/packages/core/build_pigeon_plugins.sh +++ b/packages/core/build_pigeon_plugins.sh @@ -1,9 +1,9 @@ -mkdir -p ios/Classes +mkdir -p ios/segment_analytics/Sources/segment_analytics mkdir -p android/main/kotlin flutter pub run pigeon \ --input pigeon/context.dart \ --dart_out lib/native_context.dart \ - --experimental_swift_out ios/Classes/Context.swift \ + --experimental_swift_out ios/segment_analytics/Sources/segment_analytics/Context.swift \ --experimental_kotlin_out android/src/main/kotlin/com/segment/analytics/Context.kt \ --java_package "com.segment.flutter" \ No newline at end of file diff --git a/packages/core/devtools_options.yaml b/packages/core/devtools_options.yaml new file mode 100644 index 0000000..fa0b357 --- /dev/null +++ b/packages/core/devtools_options.yaml @@ -0,0 +1,3 @@ +description: This file stores settings for Dart & Flutter DevTools. +documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states +extensions: diff --git a/packages/core/ios/.gitignore b/packages/core/ios/.gitignore index 0c88507..7b634ab 100644 --- a/packages/core/ios/.gitignore +++ b/packages/core/ios/.gitignore @@ -35,4 +35,7 @@ Icon? /Flutter/Generated.xcconfig /Flutter/ephemeral/ -/Flutter/flutter_export_environment.sh \ No newline at end of file +/Flutter/flutter_export_environment.sh + +.build/ +.swiftpm/ \ No newline at end of file diff --git a/packages/core/ios/segment_analytics.podspec b/packages/core/ios/segment_analytics.podspec index ea79102..2211bfb 100644 --- a/packages/core/ios/segment_analytics.podspec +++ b/packages/core/ios/segment_analytics.podspec @@ -13,7 +13,7 @@ The hassle-free way to add Segment analytics to your Flutter app. s.license = { :file => '../LICENSE' } s.author = { 'Segment' => 'support@segment.com' } s.source = { :path => '.' } - s.source_files = 'Classes/**/*' + s.source_files = 'segment_analytics/Sources/segment_analytics/**/*.swift' s.dependency 'Flutter' s.platform = :ios, '9.0' diff --git a/packages/core/ios/Package.swift b/packages/core/ios/segment_analytics/Package.swift similarity index 53% rename from packages/core/ios/Package.swift rename to packages/core/ios/segment_analytics/Package.swift index 28762e7..7eb2e28 100644 --- a/packages/core/ios/Package.swift +++ b/packages/core/ios/segment_analytics/Package.swift @@ -6,18 +6,19 @@ import PackageDescription let package = Package( name: "segment_analytics", platforms: [ - .iOS("12.0"), + .iOS("13.0"), ], products: [ - .library(name: "segment-analytics", type: .static, targets: ["segment_analytics"]), + .library(name: "segment-analytics", targets: ["segment_analytics"]), + ], + dependencies: [ + .package(name: "FlutterFramework", path: "../FlutterFramework"), ], targets: [ .target( name: "segment_analytics", - dependencies: [], - path: "Classes", - linkerSettings: [ - .linkedFramework("Flutter", .when(platforms: [.iOS])), + dependencies: [ + .product(name: "FlutterFramework", package: "FlutterFramework"), ] ), ] diff --git a/packages/core/ios/Classes/AnalyticsPlugin.swift b/packages/core/ios/segment_analytics/Sources/segment_analytics/AnalyticsPlugin.swift similarity index 100% rename from packages/core/ios/Classes/AnalyticsPlugin.swift rename to packages/core/ios/segment_analytics/Sources/segment_analytics/AnalyticsPlugin.swift diff --git a/packages/core/ios/Classes/AppleUtils.swift b/packages/core/ios/segment_analytics/Sources/segment_analytics/AppleUtils.swift similarity index 100% rename from packages/core/ios/Classes/AppleUtils.swift rename to packages/core/ios/segment_analytics/Sources/segment_analytics/AppleUtils.swift diff --git a/packages/core/ios/Classes/Context.swift b/packages/core/ios/segment_analytics/Sources/segment_analytics/Context.swift similarity index 100% rename from packages/core/ios/Classes/Context.swift rename to packages/core/ios/segment_analytics/Sources/segment_analytics/Context.swift diff --git a/packages/core/ios/Classes/LinuxUtils.swift b/packages/core/ios/segment_analytics/Sources/segment_analytics/LinuxUtils.swift similarity index 100% rename from packages/core/ios/Classes/LinuxUtils.swift rename to packages/core/ios/segment_analytics/Sources/segment_analytics/LinuxUtils.swift diff --git a/packages/core/ios/Classes/VendorSystem.swift b/packages/core/ios/segment_analytics/Sources/segment_analytics/VendorSystem.swift similarity index 100% rename from packages/core/ios/Classes/VendorSystem.swift rename to packages/core/ios/segment_analytics/Sources/segment_analytics/VendorSystem.swift diff --git a/packages/core/lib/state.dart b/packages/core/lib/state.dart index e8f8cb2..bbeee77 100644 --- a/packages/core/lib/state.dart +++ b/packages/core/lib/state.dart @@ -160,7 +160,7 @@ abstract class PersistedState implements AsyncStateNotifier { } void init(ErrorHandler errorHandler, bool storageJson) { - this._errorHandler = errorHandler; + _errorHandler = errorHandler; addListener((state) { if (_persistance != null) { _hasUpdated = true; diff --git a/packages/core/macos/.gitignore b/packages/core/macos/.gitignore new file mode 100644 index 0000000..2d9f16e --- /dev/null +++ b/packages/core/macos/.gitignore @@ -0,0 +1,2 @@ +.build/ +.swiftpm/ diff --git a/packages/core/macos/segment_analytics.podspec b/packages/core/macos/segment_analytics.podspec index a7543aa..b26416b 100644 --- a/packages/core/macos/segment_analytics.podspec +++ b/packages/core/macos/segment_analytics.podspec @@ -14,7 +14,7 @@ Analytics Flutter MacOS plugin. s.author = { 'Christy Haragan' => 'charagan@twilio.com' } s.source = { :path => '.' } - s.source_files = 'Classes/**/*' + s.source_files = 'segment_analytics/Sources/segment_analytics/**/*.swift' s.dependency 'FlutterMacOS' s.platform = :osx, '10.11' diff --git a/packages/core/macos/Package.swift b/packages/core/macos/segment_analytics/Package.swift similarity index 57% rename from packages/core/macos/Package.swift rename to packages/core/macos/segment_analytics/Package.swift index 022f5b3..715050f 100644 --- a/packages/core/macos/Package.swift +++ b/packages/core/macos/segment_analytics/Package.swift @@ -9,15 +9,16 @@ let package = Package( .macOS("10.14"), ], products: [ - .library(name: "segment-analytics", type: .static, targets: ["segment_analytics"]), + .library(name: "segment-analytics", targets: ["segment_analytics"]), + ], + dependencies: [ + .package(name: "FlutterFramework", path: "../FlutterFramework"), ], targets: [ .target( name: "segment_analytics", - dependencies: [], - path: "Classes", - linkerSettings: [ - .linkedFramework("FlutterMacOS", .when(platforms: [.macOS])), + dependencies: [ + .product(name: "FlutterFramework", package: "FlutterFramework"), ] ), ] diff --git a/packages/core/macos/Classes/AnalyticsPlugin.swift b/packages/core/macos/segment_analytics/Sources/segment_analytics/AnalyticsPlugin.swift similarity index 100% rename from packages/core/macos/Classes/AnalyticsPlugin.swift rename to packages/core/macos/segment_analytics/Sources/segment_analytics/AnalyticsPlugin.swift diff --git a/packages/core/macos/Classes/AppleUtils.swift b/packages/core/macos/segment_analytics/Sources/segment_analytics/AppleUtils.swift similarity index 100% rename from packages/core/macos/Classes/AppleUtils.swift rename to packages/core/macos/segment_analytics/Sources/segment_analytics/AppleUtils.swift diff --git a/packages/core/macos/Classes/Context.swift b/packages/core/macos/segment_analytics/Sources/segment_analytics/Context.swift similarity index 100% rename from packages/core/macos/Classes/Context.swift rename to packages/core/macos/segment_analytics/Sources/segment_analytics/Context.swift diff --git a/packages/core/macos/Classes/LinuxUtils.swift b/packages/core/macos/segment_analytics/Sources/segment_analytics/LinuxUtils.swift similarity index 100% rename from packages/core/macos/Classes/LinuxUtils.swift rename to packages/core/macos/segment_analytics/Sources/segment_analytics/LinuxUtils.swift diff --git a/packages/core/macos/Classes/VendorSystem.swift b/packages/core/macos/segment_analytics/Sources/segment_analytics/VendorSystem.swift similarity index 100% rename from packages/core/macos/Classes/VendorSystem.swift rename to packages/core/macos/segment_analytics/Sources/segment_analytics/VendorSystem.swift