flutter-spm について
Flutter 3.44以降でiOS・macOSの依存関係にSwift Package Managerを使うための、開発者やプラグイン作者向けガイドです。プロジェクト設定、依存関係の宣言、CIキャッシュ、問題解決を扱います。
主な機能
- 01Flutter 3.44以降のSPM設定
- 02Xcodeによるネイティブパッケージ管理
- 03プラグイン依存関係の宣言
- 04CIキャッシュの指針
- 05依存関係解決のトラブル対応
活用シーン
- 01iOS RunnerへのSwiftパッケージ追加
- 02FlutterプラグインでのSPM依存関係宣言
- 03CIビルドでのSPMファイルのキャッシュ
- 04パッケージ解決失敗やバージョン競合の解消
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dhruvanbhalara/ skills --skill flutter-spmインストール後、Claude Code で/flutter-spmを入力して読み込まれたか確認します。
詳細
Flutter における Swift Package Manager(SPM)
Flutter 3.44 で導入
Swift Package Manager は、Flutter における iOS および macOS アプリケーションのデフォルトの依存関係マネージャーであり、CocoaPods に代わるものです。この最新の統合により、コンパイル速度が向上し、ネイティブパッケージの依存関係ツリーが簡素化されます。
目次
プロジェクトの構成
Flutter 3.44 以降では、新しく生成された iOS および macOS プラットフォームは、初期状態で SPM を使用するように構成されています。
主な変更点
PodfileまたはPodfile.lockが不要:iOS ディレクトリで CocoaPods が不要になりました。- Xcode ワークスペースとの統合:ネイティブ依存関係は、Xcode の「Package Dependencies」から直接管理します。
- Flutter プラグイン:ネイティブの Swift コードを含むプラグインは、
pubspec.yamlまたはPackage.swiftファイル内で SPM の構成を宣言します。Flutter はそれらを runner ターゲットに自動的に統合します。
依存関係の管理
Swift パッケージの追加
iOS Runner にネイティブパッケージを直接追加するには、次の手順に従います。
- Xcode で
ios/Runner.xcworkspaceを開きます。 - File > Add Package Dependencies... を選択します。
- パッケージの URL(例:
https://github.com/Alamofire/Alamofire)を入力し、ターゲットバージョンを選択します。 - パッケージを
Runnerターゲットにリンクします。
プラグイン作成者向け
Flutter プラグインの SPM 依存関係を定義するには、pubspec.yaml の swift_packages フィールドを使用します。
flutter:
plugin:
platforms:
ios:
pluginClass: MyPlugin
swift_packages:
- name: Alamofire
url: https://github.com/Alamofire/Alamofire.git
version: 5.9.0
CI/CD のキャッシュ戦略
SPM の依存関係は、プロジェクトのワークスペース外に保存されます。CI のビルド時間を最適化するには(例:GitHub Actions)、次のディレクトリをキャッシュします。
- SPM キャッシュディレクトリ:
~/Library/Caches/org.swift.swiftpm - Xcode DerivedData:
~/Library/Developer/Xcode/DerivedData
GitHub Actions のキャッシュ例
- name: Cache Swift Package Manager Dependencies
uses: actions/cache@v4
with:
path: |
~/Library/Caches/org.swift.swiftpm
~/Library/Developer/Xcode/DerivedData
key: ${{ runner.os }}-spm-${{ hashFiles('**/pubspec.yaml', 'ios/Runner.xcodeproj/project.pbxproj') }}
restore-keys: |
${{ runner.os }}-spm-
トラブルシューティングと競合の解決
パッケージの解決に失敗する場合
CLI ビルド中に SPM の依存関係を解決できない場合は、次の手順に従います。
# 1. Clean the project
flutter clean
# 2. Resolve package dependencies manually via Xcode CLI
xcodebuild -resolvePackageDependencies -workspace ios/Runner.xcworkspace -scheme Runner
バージョンの競合
複数のプラグインが同じ Swift パッケージに対して互換性のないバージョンを要求する場合:
- Xcode でプロジェクトを開きます。
- Runner > Package Dependencies に移動します。
- パッケージの依存関係ルールを手動で上書きし、統一された互換性のあるバージョンを適用します。
コメント
Markdown 対応