設定 iOS 和 macOS 的 Flutter Flavor
如何為 iOS 或 macOS 應用建立 Flutter Flavor。
本指南向您展示如何為 iOS 或 macOS 應用建立 Flutter Flavor。
概述
#Flutter Flavor 本質上是一組設定的集合,用於定義特定版本的應用如何構建和執行。例如,Flavor 可以決定與應用特定版本關聯的圖示、應用名稱、API 金鑰、功能開關和日誌級別。
如果您想為 iOS 應用建立 Flutter Flavor,則需要在 Xcode 中進行操作。Xcode 沒有“Flavor”的概念。相反,您需要設定所謂的“Scheme”(方案),並將自定義配置附加到該方案中。
下圖展示了將兩個 Flutter Flavor(staging 和 production)作為 Xcode Scheme,併為其分配自定義 Xcode 配置的示例
| Scheme | Scheme 的配置 |
|---|---|
| staging | Debug-staging Profile-staging Release-staging |
| production | Debug-production Profile-production Release-production |
配置 Xcode Schemes
#以下步驟展示瞭如何為 Flutter iOS 專案配置名為 staging 和 production 的兩個 Xcode Scheme。您也可以透過將所有 iOS 引用替換為 macOS 來使用這些步驟設定 macOS 專案。
為了實現無縫工作流程,我們從一個名為 flavors_example 的新 Flutter 專案開始,但您也可以隨時在現有專案中進行設定。
-
建立一個名為
flavors_example的新 Flutter 專案。控制檯flutter create flavors_example -
開啟
flavors_example專案 iOS 版本的預設 Xcode 工作區。控制檯cd flavors_example && open ios/Runner.xcworkspace -
在 Xcode 專案導航器中開啟
flavors_example專案開啟專案導航器(View > Navigators > Project)。
在專案導航器頂部,選擇 Runner。
-
在 Xcode 中建立 Scheme
開啟 New Scheme 視窗(Product > Scheme > New Scheme)。
在 Target 欄位中,選擇 Runner。
在 Name 框中,輸入
staging。點選 Okay 新增新 Scheme。
對名為
production的 Scheme 重複上述步驟。完成後,檢查以確保您擁有以下 Scheme

-
在 Xcode 中為 Scheme 建立配置
在專案導航器中,選擇 Runner。
在主視窗的 PROJECT 下,選擇 Runner。
如果尚未開啟,請開啟 Info 選項卡。
轉到 Configurations 部分並新增新的
Debug配置。- 點選 +,選擇 Duplicate "Debug" configuration,並將新配置命名為
Debug-staging。 - 點選 +,選擇 Duplicate "Debug" configuration,並將新配置命名為
Debug-production。
- 點選 +,選擇 Duplicate "Debug" configuration,並將新配置命名為
對
Release配置和Profile配置重複上述步驟。完成後,檢查以確保您擁有以下配置

-
在 Xcode 中將配置分配給 Scheme
開啟 Manage Schemes 視窗(Product > Scheme > Manage Schemes)。
選擇
stagingScheme 並對其進行編輯。在以下選項卡中,按如下方式更新 Build Configuration 欄位
- Run:
Debug-staging - Test:
Debug-staging - Profile:
Profile-staging - Analyze:
Debug-staging - Archive:
Release-staging
- Run:
點選 Close。
對
productionScheme 重複上述步驟。
-
如果您正在處理包含至少一個 Podfile 的現有 Flutter 專案,請對其進行更新。有關更多資訊,請參閱 更新 Podfile。
-
為確保一切設定正確,請在 Xcode 中使用新 Scheme 執行您的應用。由於配置設定尚未更改,您不會看到任何視覺差異,但您需要確認應用可以執行。
選擇
stagingScheme(Product > Schemes > staging)。在工具欄中
staging的右側,選擇您要測試的 iOS 裝置。在下例中,裝置是iPhone 16 Pro。
執行應用 Scheme(Product > Run)。
對
productionScheme 重複上述步驟。
-
如果應用執行正常,您就可以開始自定義配置了。有關更多資訊,請參閱 自定義配置。
啟動 Xcode Scheme
#在 Xcode 中為 iOS 應用建立 Scheme 後,您可以透過 Xcode 或 Flutter 啟動特定 Scheme。您也可以透過將所有 iOS 引用替換為 macOS 來使用這些步驟啟動 macOS 專案。
使用 flavor 標誌(Flutter CLI)
#您可以使用以下步驟透過 Flutter CLI 在 Debug 模式下啟動 Xcode Scheme
在您的 IDE 中,啟動 iOS 模擬器。
-
在控制檯中,導航到
flavors_example目錄並輸入以下命令控制檯flutter run --flavor <xcode_scheme_name><xcode_scheme_name>:將其替換為您的 Xcode Scheme 名稱(例如staging或production)。
示例
控制檯flutter run --flavor staging
訪問當前 Flavor
#-
匯入服務庫:要訪問
appFlavor常量,請將以下匯入新增到您的 Dart 檔案中dartimport 'package:flutter/services.dart'; -
檢查 Flavor 值:在您的應用邏輯中使用
appFlavor常量(通常在main()中)來處理特定於 Flavor 的配置dartvoid main() { // appFlavor will match the name of the Xcode scheme if (appFlavor == 'production') { // Logic for production environment Config.apiUrl = 'https://api.flavors_example.com'; } else if (appFlavor == 'staging') { // Logic for staging environment Config.apiUrl = 'https://staging.api.flavors_example.com'; } runApp(const MyApp()); }
使用執行命令(Xcode)
#您可以使用以下步驟在 Xcode 中啟動特定 Scheme
-
選擇您要測試的 Scheme(Product > Schemes > Choose scheme)。
-
在工具欄的 Scheme 名稱旁邊,選擇您要測試的裝置。
-
執行應用的 Scheme(Product > Run)。
自定義配置
#新增 Xcode Scheme 後,您可以為 iOS 應用自定義它們。您也可以透過將所有 iOS 引用替換為 macOS 來使用這些步驟配置 macOS 專案。
建立不同的應用顯示名稱
#如果您有多個 Scheme,清晰的應用名稱可以快速識別已部署的應用正在使用哪個 Scheme。
以下步驟展示瞭如何在名為 flavors_example 的專案中,為兩個名為 staging 和 production 的 Scheme 新增不同的應用顯示名稱。
-
在 Xcode 中建立使用者自定義設定
開啟專案導航器(View > Navigators > Project)。
在專案導航器頂部,選擇 Runner。
在主視窗的 TARGETS 下,選擇 Runner。
開啟 Build Settings 選項卡。
在 Basic 選項卡左側,點選 + 並選擇 Add User-Defined Setting。
建立一個名為
APP_DISPLAY_NAME的設定。展開 APP_DISPLAY_NAME 設定。
為以下鍵分配對應的值
- Debug-production:
Flavors prod - Debug-staging:
Flavors staging - Profile-production:
Flavors prod - Profile-staging:
Flavors staging - Release-production:
Flavors prod - Release-staging:
Flavors staging
- Debug-production:
-
在 Xcode 中更新
Info.plist在專案導航器中,選擇 Runner > Runner > Info 以開啟
flavor_test/ios/Runner/Info.plist。在 Information Property List 下,找到以下鍵並更新其值
- Key:
CFBundleDisplayName - Value:
$(APP_DISPLAY_NAME)
- Key:
-
啟動每個 Scheme(
staging,production)的應用,並確認每個 Scheme 的應用顯示名稱均已更改。要啟動 Scheme,請參閱 啟動 Xcode Scheme 中的步驟。
建立不同的圖示
#如果您有多個 Scheme,每個配置使用不同的圖示可以幫助您快速識別已部署的應用正在使用哪個 Scheme。
以下步驟展示瞭如何在名為 flavors_example 的 iOS 專案中,為兩個名為 staging 和 production 的 Scheme 新增不同的圖示。
-
準備您的圖示
在您選擇的設計工具中設計 staging 圖示和 production 圖示。
生成所需尺寸的 staging 和 production 圖示版本。儲存為 PNG 格式。
-
將圖示新增到您的 Xcode 專案
開啟專案導航器(View > Navigators > Project)。
在專案導航器中,選擇 Runner > Runner > Assets 以開啟 Assets 視窗。
針對 staging 圖示完成以下步驟
點選 + > iOS > iOS App icon。
將圖示命名為
AppIcon-staging。將您的 staging 圖示拖入 AppIcon-staging 視窗,並確保圖示已分配到正確的尺寸。
對 production 圖示重複上述步驟。
-
將圖示連線到您的 Scheme
開啟專案導航器。
在主視窗的 TARGETS 下,選擇 Runner。
如果尚未開啟,請開啟 General 選項卡。
轉到 App Icons and Launch Screen 部分並將其展開。
在 App icon 欄位右側,點選 + 並按如下方式更新欄位
- Debug-staging:
AppIcon-staging - Profile-staging:
AppIcon-staging - Release-staging:
AppIcon-staging - Debug-production:
AppIcon-production - Profile-production:
AppIcon-production - Release-production:
AppIcon-production
- Debug-staging:
-
啟動每個 Scheme(
staging,production)的應用,並確認每個 Scheme 的應用圖示均已更改。要啟動 Scheme,請參閱 啟動 Xcode Scheme 中的步驟。
新增不同的 Bundle Identifier
#Bundle Identifier 是您應用在 Apple 平臺上的唯一識別符號。如果您將多個 Xcode Scheme 用作 Flutter Flavor,則可以讓 Apple 將每個 Scheme 視為單獨的應用。為此,您需要為每個 Scheme 分配不同的 Bundle Identifier。這使您可以在一個版本的應用中(例如 staging)測試新功能或錯誤修復,而不會影響另一個版本的應用(例如 production)。
以下步驟展示瞭如何在名為 flavors_example 的 iOS 專案中,為兩個名為 staging 和 production 的 Xcode Scheme 設定唯一的 Bundle Identifier。
-
在 Xcode 中開啟專案導航器(View > Navigators > Project)。
-
在主視窗的 TARGETS 下,選擇 Runner。
開啟 Build Settings 選項卡。
導航到 Packaging 部分。
-
展開 Product Bundle Identifier 設定以檢視不同的構建配置。
-
為每個 Scheme 的構建配置設定所需的 Bundle Identifier。例如
Debug-staging, Profile-staging, Release-staging
com.example.flavorsExample.stagingDebug, Profile, Release, Debug-production, Profile-production, Release-production
com.example.flavorsExample
-
確保這些 Bundle Identifier 已包含在您的 App ID 中,並且您的 App ID 已在 Apple 開發者賬戶中註冊。
打包資源
#如果您有僅在應用特定 Flavor 中使用的資源,則可以將它們配置為僅在啟動該 Flavor 時打包到應用中。這可以防止應用包因未使用的資源而變得過大。要為每個 Flavor 打包資源,請在專案的 pubspec 中將 flavors 子欄位新增到 assets 欄位。瞭解更多資訊,請參閱 Flutter pubspec 選項 中的 assets 欄位。
更新 Podfile
#如果您正在為 Flutter iOS 專案建立新的 Xcode Scheme,且現有 Flutter 專案中已有 iOS Podfile,則必須更新該 Flutter iOS Podfile 以匹配您在 Xcode 中所做的更改。
以下步驟展示瞭如何在名為 flavors_example 的 Flutter 專案中更新 iOS Podfile,以包含名為 staging 和 production 的兩個新 Xcode Scheme。您也可以透過將所有 iOS 引用替換為 macOS 來使用這些步驟更新 macOS 專案。
在您的 IDE 中,開啟
ios/Podfile檔案。-
進行以下更新並儲存更改。
flavors_example/ios/Podfilerubyproject 'Runner', { ... 'Debug' => :debug, 'Debug-staging' => :debug, 'Debug-production' => :debug, 'Profile' => :release, 'Profile-staging' => :release, 'Profile-production' => :release, 'Release' => :release, 'Release-staging' => :release, 'Release-production' => :release, ...
新增獨特的構建設定
#您可以使用 構建設定 來管理從編譯、連結到除錯、分發在內的 iOS 構建過程。將構建設定與 Flutter Flavor 結合使用的一種方法是將這些構建設定分配給 Xcode 構建配置。例如,您可能希望為 Debug-staging 和 Debug-production 分配不同的 API URL。例如
# Debug-staging build settings
API_BASE_URL = staging.flavors.com/api
# Debug-production build settings
API_BASE_URL = flavors.com/api
如果您想為特定構建配置新增額外的構建設定,請參閱 Apple 的 將構建配置檔案新增到您的專案。
新增其他自定義項
#本文件包含了一些常見的 Xcode Scheme 配置,但您可以應用更多配置。要了解它們,請參閱 自定義專案的構建 Scheme。
更多資訊
#有關建立和使用 Flavor 的更多資訊,請查閱以下資源