为 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 | |
|---|---|
| staging |
Debug-staging Profile-staging Release-staging |
| production |
Debug-production Profile-production Release-production |
配置 Xcode scheme
#
以下步骤说明如何为 Flutter iOS 项目配置名为 staging 和 production 的两个 Xcode scheme。也可将 iOS 替换为 macOS 来配置 macOS 项目。
为流程顺畅,我们从名为 flavors_example 的新 Flutter 项目开始,你也可以从现有项目入手。
-
创建一个名为
flavors_example的新 Flutter 项目。consoleflutter create flavors_example -
为
flavors_example项目的 iOS 版本打开默认的 Xcode workspace。consolecd flavors_example && open ios/Runner.xcworkspace -
在 Xcode 项目导航器中打开
flavors_example项目:打开 project navigator(View > Navigators > Project)。
在 project navigator 顶部选择 Runner。
-
在 Xcode 中创建 scheme:
打开 New Scheme 窗口(Product > Scheme > New Scheme)。
在 Target 字段中选择 Runner。
在 Name 框中输入
staging。点击 Okay 添加新 scheme。
对名为
production的 scheme 重复上述步骤。完成后,检查确认你已拥有以下 scheme:

-
在 Xcode 中为这些 scheme 创建配置:
在 project navigator 中选择 Runner。
在主窗口的 PROJECT 下选择 Runner。
若 Info tab 未打开,请将其打开。
进入 Configurations 部分,添加新的
Debug配置。点击 +,选择 Duplicate "Debug" configuration,并将新配置命名为
Debug-staging。点击 +,选择 Duplicate "Debug" configuration,并将新配置命名为
Debug-production。
对
Release配置和Profile配置重复上一步骤。完成后,检查确认你已拥有以下配置:

-
在 Xcode 中将配置分配给这些 scheme:
打开 Manage Schemes 窗口(Product > Scheme > Manage Schemes)。
选择
stagingscheme 并进行编辑。在以下各个 tab 中,按如下方式更新 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目录,并输入以下命令:consoleflutter run --flavor <xcode_scheme_name><xcode_scheme_name>:替换为你的 Xcode scheme 名称(例如staging或production)。
示例:
consoleflutter run --flavor staging
访问当前 flavor
#-
导入 services 库: 要访问
appFlavor常量,在 Dart 文件中添加以下 import:dartimport 'package:flutter/services.dart'; -
检查 flavor 值: 在应用逻辑(通常在
main()中)使用appFlavor常量处理 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()); }
appFlavor 的值与你定义的 Xcode scheme 名称一致(如 staging 或 production)。构建时未指定 flavor 则
appFlavor 返回 null。
:::
使用 run 命令(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 中添加不同的应用显示名称。
-
在 Xcode 中创建用户自定义设置:
打开 project navigator(View > Navigators > Project)。
在 project navigator 顶部选择 Runner。
在主窗口的 TARGETS 下选择 Runner。
打开 Build Settings tab。
在 Basic tab 左侧,点击 + 并选择 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 在 Xcode 中添加不同图标。
-
准备你的图标:
用你喜欢的设计工具设计 staging 图标和 production 图标。
生成你所需尺寸的 staging 图标和 production 图标,并以 PNG 格式保存。
-
将图标添加到你的 Xcode 项目:
打开 project navigator(View > Navigators > Project)。
在 project navigator 中,选择 Runner > Runner > Assets 以打开 Assets 窗口。
对 staging 图标完成以下步骤:
点击 + > iOS > iOS App icon。
将图标命名为
AppIcon-staging。将你的 staging 图标拖入 AppIcon-staging 窗口,并确保这些图标已分配到正确的尺寸。
对 production 图标重复上一步骤。
-
将图标关联到你的 scheme:
打开 project navigator。
在主窗口的 TARGETS 下选择 Runner。
若 General tab 尚未打开,请将其打开。
进入 Apps 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 中打开 project navigator(View > Navigators > Project)。
-
在主窗口的 TARGETS 下选择 Runner。
打开 Build Settings tab。
进入 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 Developer 账号中注册。
打包资源
#
若资源仅在应用的特定 flavor 中使用,可配置为仅在该 flavor 启动时打包,避免未使用资源增大包体积。为每个 flavor 打包资源,请在项目 pubspec 的 assets
字段添加 flavors 子字段。详见 Flutter pubspec options 中的 assets field。
更新 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, ...
添加唯一构建设置
#
可使用 build settings(构建设置)管理从编译、链接到调试和分发的 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 的 Adding a build configuration file to your project(向项目添加构建配置文件)。
添加更多自定义项
#本文档包含若干常见 Xcode scheme 配置,还可应用更多配置。详见 Customizing the build schemes for a project(自定义项目的构建 scheme)。
更多信息
#有关创建和使用 flavor 的更多信息,请参阅以下资源:
除非另有说明,本文档之所提及适用于 Flutter 3.44.0 版本。本页面最后更新时间:2026-06-13。查看文档源码 或者 为本页面内容提出建议。