Files
conti-retail-app/app/ios/FLAVORS.md
T

76 lines
3.3 KiB
Markdown
Raw Normal View History

2026-08-17 15:29:55 +08:00
# iOS flavor 手工配置步骤
**这一步必须在 macOS + Xcode 上做,命令行做不到。** Xcode 的 Build
Configuration 和 Scheme 存在 `Runner.xcodeproj/project.pbxproj` 里,那是一份
Xcode 自己维护的二进制风格文本,手写会在下一次 Xcode 打开时被改乱,出的问题
("某个 target 的某个配置莫名其妙丢了")极难排查。
所以这个仓库只提供三份 `.xcconfig`(`ios/Flutter/{Dev,Uat,Prod}.xcconfig`),
剩下的连线由第一个拿到 Mac 的人做一次,之后进 git。
> 08-build-flavors.md 已经把 iOS 侧列为**头号阻塞项**——目前团队没有可用的
> Mac 构建机,Apple 开发者账号也未确认。在那之前 iOS 只能跑默认配置。
## 步骤
1. 打开 `app/ios/Runner.xcworkspace`(不是 `.xcodeproj`)。
2. 选中项目 → **Info** → **Configurations**。此时应该有 `Debug` / `Release` /
`Profile` 三条。对每一条点 `+` → **Duplicate ... Configuration**,复制成:
| 原 | 复制为 |
|---|---|
| Debug | `Debug-dev`、`Debug-uat`、`Debug-prod` |
| Release | `Release-dev`、`Release-uat`、`Release-prod` |
| Profile | `Profile-dev`、`Profile-uat`、`Profile-prod` |
一共 9 条。**名字必须完全是 `<原名>-<flavor>`**:`flutter run --flavor dev`
就是靠这个命名约定找配置的,写成 `Debug-Dev` 都不行。
做完之后把原来的 `Debug` / `Release` / `Profile` 删掉。
3. 每条配置的 Runner target 那一列,选对应的 xcconfig:
`*-dev` → `Flutter/Dev.xcconfig`,`*-uat` → `Flutter/Uat.xcconfig`,
`*-prod` → `Flutter/Prod.xcconfig`。
> 注意:Flutter 生成的 `Debug.xcconfig` / `Release.xcconfig` 里
> `#include "Generated.xcconfig"` 不能丢。三份 flavor 配置需要在开头补上
> `#include "Debug.xcconfig"`(或 `Release.xcconfig`)——`flutter build` 靠
> `Generated.xcconfig` 传 `FLUTTER_TARGET` 等参数,丢了会构建失败且报错
> 信息完全指不到这里。
4. **Product → Scheme → Manage Schemes**,把 `Runner` 复制成 `dev` / `uat` /
`prod` 三个 Scheme(名字就是 flavor 名),各自 Edit Scheme:
- Run → Build Configuration → `Debug-<flavor>`
- Profile → `Profile-<flavor>`
- Archive → `Release-<flavor>`
- 三个 Scheme 都要勾 **Shared**,否则不进 git,只有你自己的机器上有。
5. `Runner/Info.plist` 里把
```xml
<key>CFBundleDisplayName</key>
<string>Retail</string>
```
改成
```xml
<key>CFBundleDisplayName</key>
<string>$(APP_DISPLAY_NAME)</string>
```
**改完必须先做完第 3 步**:`APP_DISPLAY_NAME` 只在三份 flavor xcconfig 里
定义,没接上就是空的桌面名。
6. 验证:
```bash
cd app
flutter build ios --flavor dev
2026-08-17 15:29:55 +08:00
```
三个 flavor 各跑一次,确认桌面上能同时装下三个图标、名字不同。
## 已知的坑
- **CocoaPods 和 flavor 无关**:`Podfile` 不需要改,pod 是按 target 装的,
不是按 configuration。但新增 configuration 后要跑一次 `pod install`,否则
会报 `Unable to find a configuration named 'Debug-dev'`。
- 项目固定使用 `lib/main.dart`。`--flavor` 除了选择 Scheme,还会让启动代码
选择同名的内置环境配置;不要再额外传 `-t` 或 `--dart-define-from-file`。