mcpField
F
flutter-spm

flutter-spm

github.com/dhruvanbhalara開発3040 回インストール8 週間前に更新
リポジトリ

flutter-spm について

Flutter 3.44以降でiOS・macOSの依存関係にSwift Package Managerを使うための、開発者やプラグイン作者向けガイドです。プロジェクト設定、依存関係の宣言、CIキャッシュ、問題解決を扱います。

主な機能

  1. 01Flutter 3.44以降のSPM設定
  2. 02Xcodeによるネイティブパッケージ管理
  3. 03プラグイン依存関係の宣言
  4. 04CIキャッシュの指針
  5. 05依存関係解決のトラブル対応

活用シーン

  1. 01iOS RunnerへのSwiftパッケージ追加
  2. 02FlutterプラグインでのSPM依存関係宣言
  3. 03CIビルドでのSPMファイルのキャッシュ
  4. 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 にネイティブパッケージを直接追加するには、次の手順に従います。

  1. Xcode で ios/Runner.xcworkspace を開きます。
  2. File > Add Package Dependencies... を選択します。
  3. パッケージの URL(例:https://github.com/Alamofire/Alamofire)を入力し、ターゲットバージョンを選択します。
  4. パッケージを 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 パッケージに対して互換性のないバージョンを要求する場合:

  1. Xcode でプロジェクトを開きます。
  2. Runner > Package Dependencies に移動します。
  3. パッケージの依存関係ルールを手動で上書きし、統一された互換性のあるバージョンを適用します。

コメント