3.4 KiB
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 只能跑默认配置。
步骤
-
打开
app/ios/Runner.xcworkspace(不是.xcodeproj)。 -
选中项目 → Info → Configurations。此时应该有
Debug/Release/Profile三条。对每一条点+→ Duplicate ... Configuration,复制成:原 复制为 Debug Debug-dev、Debug-uat、Debug-prodRelease Release-dev、Release-uat、Release-prodProfile Profile-dev、Profile-uat、Profile-prod一共 9 条。名字必须完全是
<原名>-<flavor>:flutter run --flavor dev就是靠这个命名约定找配置的,写成Debug-Dev都不行。做完之后把原来的
Debug/Release/Profile删掉。 -
每条配置的 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等参数,丢了会构建失败且报错 信息完全指不到这里。 -
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,只有你自己的机器上有。
- Run → Build Configuration →
-
Runner/Info.plist里把<key>CFBundleDisplayName</key> <string>Retail</string>改成
<key>CFBundleDisplayName</key> <string>$(APP_DISPLAY_NAME)</string>改完必须先做完第 3 步:
APP_DISPLAY_NAME只在三份 flavor xcconfig 里 定义,没接上就是空的桌面名。 -
验证:
cd app flutter build ios --flavor dev -t lib/main_dev.dart --dart-define-from-file=env/dev.json三个 flavor 各跑一次,确认桌面上能同时装下三个图标、名字不同。
已知的坑
- CocoaPods 和 flavor 无关:
Podfile不需要改,pod 是按 target 装的, 不是按 configuration。但新增 configuration 后要跑一次pod install,否则 会报Unable to find a configuration named 'Debug-dev'。 --flavor和-t必须同时给。只给--flavor dev会用默认的lib/main.dart——这个文件在本仓库里不存在(入口是main_dev.dart), 报错信息是找不到文件,和 flavor 看不出关系。