Skip to content

Add Swift Package Manager support - #1015

Open
zbarbuto wants to merge 1 commit into
fluttercommunity:masterfrom
NextFaze:feature/swift-package-manager
Open

Add Swift Package Manager support#1015
zbarbuto wants to merge 1 commit into
fluttercommunity:masterfrom
NextFaze:feature/swift-package-manager

Conversation

@zbarbuto

@zbarbuto zbarbuto commented Jun 4, 2026

Copy link
Copy Markdown

Closes #980
Closes #1014

  • Add Package.swift
  • Move resources and source files to required directory for SPM
  • Update podspec to use SPM directory for resources
  • Load database init file from location depending on package manager

The package now supports both CocoaPods and SPM. You can test the example by editing pubspec.yaml and toggling flutter -> config -> enable-swift-package-manager. If it is disabled a Podfile should be created automatically - though you may need to make some tweaks to min iOS version and remove the tests.

I mostly followed the official guide for this but for a few things I relied on a similar PR for permission handler.

Example Podfile

You may need to revert some of the changes to the .xcodeproj .xcodeworkspace. as well for this to work.

# Uncomment this line to define a global platform for your project
platform :ios, '13.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', {
  'Debug' => :debug,
  'Profile' => :release,
  'Release' => :release,
}

def flutter_root
  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
  unless File.exist?(generated_xcode_build_settings_path)
    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
  end

  File.foreach(generated_xcode_build_settings_path) do |line|
    matches = line.match(/FLUTTER_ROOT\=(.*)/)
    return matches[1].strip if matches
  end
  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end

require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)

flutter_ios_podfile_setup

target 'Runner' do
  use_frameworks!

  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
  end
end

- Add `Package.swift`
- Move resources and source files to required directory for SPM
- Update podspec to use SPM directory for resources
- Load database init file from location depending on package manager
- Update example
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate Plugin to Swift Package Manager Add Swift Package Manager support

1 participant