Swift Package Manager for app developers
Flutter 的 Swift Package Manager 整合有諸多優勢
- 提供對 Swift 包生態系統的訪問。Flutter 外掛可以使用日益壯大的 Swift 包生態系統。
- 簡化 Flutter 安裝。Xcode 已包含 Swift Package Manager。如果您的專案使用 Swift Package Manager,則無需安裝 Ruby 和 CocoaPods。
如何啟用 Swift Package Manager
#Flutter 的 Swift Package Manager 支援預設關閉。要啟用它
升級到最新的 Flutter SDK
shflutter upgrade啟用 Swift Package Manager 功能
shflutter config --enable-swift-package-manager
使用 Flutter CLI 執行應用會遷移專案以新增 Swift Package Manager 整合。這會讓您的專案下載您的 Flutter 外掛所依賴的 Swift 包。已整合 Swift Package Manager 的應用需要 Flutter 3.24 或更高版本。要使用舊版本的 Flutter,您需要移除應用中的 Swift Package Manager 整合。
對於尚未支援 Swift Package Manager 的依賴項,Flutter 會回退到使用 CocoaPods。
如何停用 Swift Package Manager
#停用 Swift Package Manager 會導致 Flutter 對所有依賴項使用 CocoaPods。但是,Swift Package Manager 仍會整合到您的專案中。要完全從專案中移除 Swift Package Manager 整合,請遵循如何移除 Swift Package Manager 整合的說明。
停用單個專案
#在專案的 pubspec.yaml 檔案中,於 flutter 部分下,新增 disable-swift-package-manager: true。
# The following section is specific to Flutter packages.
flutter:
disable-swift-package-manager: true這會為該專案的所有貢獻者停用 Swift Package Manager。
全域性停用所有專案
#執行以下命令
flutter config --no-enable-swift-package-manager這會為當前使用者停用 Swift Package Manager。
如果專案與 Swift Package Manager 不相容,所有貢獻者都需要執行此命令。
如何新增 Swift Package Manager 整合
#新增到 Flutter 應用
#一旦您啟用 Swift Package Manager,Flutter CLI 會在您下次使用 CLI 執行應用時嘗試遷移您的專案。此遷移會更新您的 Xcode 專案以使用 Swift Package Manager 新增 Flutter 外掛依賴項。
遷移您的專案
使用 Flutter CLI 執行 iOS 應用。
如果您的 iOS 專案還沒有 Swift Package Manager 整合,Flutter CLI 會嘗試遷移您的專案並輸出類似以下內容:
flutter run Adding Swift Package Manager integration...自動 iOS 遷移會修改
ios/Runner.xcodeproj/project.pbxproj和ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme檔案。如果 Flutter CLI 的自動遷移失敗,請按照手動新增 Swift Package Manager 整合中的步驟操作。
[可選] 檢查您的專案是否已遷移
在 Xcode 中執行應用。
確保 Run Prepare Flutter Framework Script 作為預操作執行,並且
FlutterGeneratedPluginSwiftPackage是 Target 依賴項。
確保 Run Prepare Flutter Framework Script 作為預操作執行
一旦您啟用 Swift Package Manager,Flutter CLI 會在您下次使用 CLI 執行應用時嘗試遷移您的專案。此遷移會更新您的 Xcode 專案以使用 Swift Package Manager 新增 Flutter 外掛依賴項。
遷移您的專案
使用 Flutter CLI 執行 macOS 應用。
如果您的 macOS 專案還沒有 Swift Package Manager 整合,Flutter CLI 會嘗試遷移您的專案並輸出類似以下內容:
flutter run -d macos Adding Swift Package Manager integration...自動 iOS 遷移會修改
macos/Runner.xcodeproj/project.pbxproj和macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme檔案。如果 Flutter CLI 的自動遷移失敗,請按照手動新增 Swift Package Manager 整合中的步驟操作。
[可選] 檢查您的專案是否已遷移
在 Xcode 中執行應用。
確保 Run Prepare Flutter Framework Script 作為預操作執行,並且
FlutterGeneratedPluginSwiftPackage是 Target 依賴項。
確保 Run Prepare Flutter Framework Script 作為預操作執行
手動新增到 Flutter 應用
#一旦您啟用 Swift Package Manager,Flutter CLI 會在您下次使用 CLI 執行應用時嘗試遷移您的專案以使用 Swift Package Manager。
然而,如果存在意外修改,Flutter CLI 工具可能無法自動遷移您的專案。
如果自動遷移失敗,請使用以下步驟手動將 Swift Package Manager 整合新增到專案中。
在手動遷移之前,請提交一個 issue;這有助於 Flutter 團隊改進自動遷移過程。請在 issue 中包含錯誤訊息,如果可能,請附上以下檔案的副本:
ios/Runner.xcodeproj/project.pbxprojios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme(或所用 flavor 的 xcscheme)
步驟 1:新增 FlutterGeneratedPluginSwiftPackage 包依賴
#在 Xcode 中開啟您的應用(
ios/Runner.xcworkspace)。導航至專案的 **Package Dependencies**。

專案的包依賴項 點選 add。
在開啟的對話方塊中,點選 **Add Local...**。
導航至
ios/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage並點選 **Add Package**。確保它已新增到
RunnerTarget 並點選 **Add Package**。
確保該包已新增到 RunnerTarget確保
FlutterGeneratedPluginSwiftPackage已新增到 **Frameworks, Libraries, and Embedded Content**。
確保 FlutterGeneratedPluginSwiftPackage已新增到 **Frameworks, Libraries, and Embedded Content**
步驟 2:新增 Run Prepare Flutter Framework Script 預操作
#以下步驟必須為每個 flavor 完成。
轉到 **Product > Scheme > Edit Scheme**。
在左側邊欄展開 **Build** 部分。
點選 **Pre-actions**。
點選 add 並從選單中選擇 **New Run Script Action**。
點選 **Run Script** 標題並將其更改為
Run Prepare Flutter Framework Script將 **Provide build settings from** 更改為
Runner應用。在文字框中輸入以下內容
sh"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" prepare
新增 **Run Prepare Flutter Framework Script** 構建預操作
步驟 3:執行應用
#在 Xcode 中執行應用。
確保 Run Prepare Flutter Framework Script 作為預操作執行,並且
FlutterGeneratedPluginSwiftPackage是 Target 依賴項。
確保 Run Prepare Flutter Framework Script 作為預操作執行 確保應用在命令列中使用
flutter run執行。
一旦您啟用 Swift Package Manager,Flutter CLI 會在您下次使用 CLI 執行應用時嘗試遷移您的專案以使用 Swift Package Manager。
然而,如果存在意外修改,Flutter CLI 工具可能無法自動遷移您的專案。
如果自動遷移失敗,請使用以下步驟手動將 Swift Package Manager 整合新增到專案中。
在手動遷移之前,請提交一個 issue;這有助於 Flutter 團隊改進自動遷移過程。請在 issue 中包含錯誤訊息,如果可能,請附上以下檔案的副本:
macos/Runner.xcodeproj/project.pbxprojmacos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme(或所用 flavor 的 xcscheme)
步驟 1:新增 FlutterGeneratedPluginSwiftPackage 包依賴
#在 Xcode 中開啟您的應用(
macos/Runner.xcworkspace)。導航至專案的 **Package Dependencies**。

專案的包依賴項 點選 add。
在開啟的對話方塊中,點選 **Add Local...**。
導航至
macos/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage並點選 **Add Package**。確保它已新增到 Runner Target 並點選 **Add Package**。

確保該包已新增到 RunnerTarget確保
FlutterGeneratedPluginSwiftPackage已新增到 **Frameworks, Libraries, and Embedded Content**。
確保 FlutterGeneratedPluginSwiftPackage已新增到 **Frameworks, Libraries, and Embedded Content**
步驟 2:新增 Run Prepare Flutter Framework Script 預操作
#以下步驟必須為每個 flavor 完成。
轉到 **Product > Scheme > Edit Scheme**。
在左側邊欄展開 **Build** 部分。
點選 **Pre-actions**。
點選 add 按鈕並從選單中選擇 **New Run Script Action**。
點選 **Run Script** 標題並將其更改為
Run Prepare Flutter Framework Script將 **Provide build settings from** 更改為
RunnerTarget。在文字框中輸入以下內容
sh"$FLUTTER_ROOT"/packages/flutter_tools/bin/macos_assemble.sh prepare
新增 **Run Prepare Flutter Framework Script** 構建預操作
步驟 3:執行應用
#在 Xcode 中執行應用。
確保 Run Prepare Flutter Framework Script 作為預操作執行,並且
FlutterGeneratedPluginSwiftPackage是 Target 依賴項。
確保 Run Prepare Flutter Framework Script作為預操作執行確保應用在命令列中使用
flutter run執行。
新增到現有應用(add-to-app)
#Flutter 的 Swift Package Manager 支援不適用於 add-to-app 場景。
要及時瞭解狀態更新,請參閱 flutter#146957。
新增到自定義 Xcode Target
#您的 Flutter Xcode 專案可以包含自定義 Xcode targets 來構建附加產品,例如 framework 或單元測試。您可以將 Swift Package Manager 整合新增到這些自定義 Xcode targets。
請遵循如何手動將 Swift Package Manager 整合新增到專案中中的步驟。
在步驟 1的列表項 6 中,使用您的自定義 Target 而不是 Flutter Target。
在步驟 2的列表項 6 中,使用您的自定義 Target 而不是 Flutter Target。
如何移除 Swift Package Manager 整合
#要新增 Swift Package Manager 整合,Flutter CLI 會遷移您的專案。此遷移會更新您的 Xcode 專案以新增 Flutter 外掛依賴項。
撤銷此遷移
清理您的專案
shflutter clean在 Xcode 中開啟您的應用(
ios/Runner.xcworkspace或macos/Runner.xcworkspace)。導航至專案的 **Package Dependencies**。
點選
FlutterGeneratedPluginSwiftPackage包,然後點選 remove。
要移除的 FlutterGeneratedPluginSwiftPackage導航至
RunnerTarget 的 **Frameworks, Libraries, and Embedded Content**。點選
FlutterGeneratedPluginSwiftPackage,然後點選 remove。
要移除的 FlutterGeneratedPluginSwiftPackage轉到 **Product > Scheme > Edit Scheme**。
在左側邊欄展開 **Build** 部分。
點選 **Pre-actions**。
展開 **Run Prepare Flutter Framework Script**。
點選 **delete**。

要移除的構建預操作
如何使用需要更高作業系統版本的 Swift Package Manager Flutter 外掛
#如果 Swift Package Flutter Manager 外掛需要比專案更高的作業系統版本,您可能會收到類似以下的錯誤:
Target Integrity (Xcode): The package product 'plugin_name_ios' requires minimum platform version 14.0 for the iOS platform, but this target supports 12.0使用該外掛
在 Xcode 中開啟您的應用(
ios/Runner.xcworkspace或macos/Runner.xcworkspace)。提高您應用的 **Minimum Deployments** (最低部署版本) Target。

Target 的 **Minimum Deployments** (最低部署版本) 設定 如果您更新了 iOS 應用的 **Minimum Deployments** (最低部署版本),請重新生成 iOS 專案的配置檔案。
shflutter build ios --config-only如果您更新了 macOS 應用的 **Minimum Deployments** (最低部署版本),請重新生成 macOS 專案的配置檔案。
shflutter build macos --config-only