mcpField
F
flutter-spm

flutter-spm

github.com/dhruvanbhalara开发3040 次安装8 周前更新
代码仓库

关于 flutter-spm

面向 Flutter 开发者和插件作者的 Swift Package Manager 使用指南,适用于 Flutter 3.44+ 的 iOS 和 macOS 依赖管理。内容涵盖项目配置、依赖声明、CI 缓存与故障排查。

主要功能

  1. 01Flutter 3.44+ 的 SPM 配置
  2. 02通过 Xcode 管理原生包
  3. 03声明插件依赖
  4. 04CI 缓存指引
  5. 05依赖解析故障排查

适用场景

  1. 01向 iOS Runner 添加 Swift 包
  2. 02在 Flutter 插件中声明 SPM 依赖
  3. 03在 CI 构建中缓存 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 Package 的不兼容版本:

  1. 在 Xcode 中打开项目。
  2. 前往 Runner > Package Dependencies。
  3. 手动覆盖软件包依赖规则,以强制使用统一且兼容的版本。

评论

支持 Markdown