Files
conti-retail-app/app/ios/FLAVORS.md
T
2026-08-17 15:29:55 +08:00

3.4 KiB
Raw Blame History

iOS flavor 手工配置步骤

这一步必须在 macOS + Xcode 上做,命令行做不到。 Xcode 的 Build Configuration 和 Scheme 存在 Runner.xcodeproj/project.pbxproj 里,那是一份 Xcode 自己维护的二进制风格文本,手写会在下一次 Xcode 打开时被改乱,出的问题 ("某个 target 的某个配置莫名其妙丢了")极难排查。

所以这个仓库只提供三份 .xcconfigios/Flutter/{Dev,Uat,Prod}.xcconfig), 剩下的连线由第一个拿到 Mac 的人做一次,之后进 git。

08-build-flavors.md 已经把 iOS 侧列为头号阻塞项——目前团队没有可用的 Mac 构建机,Apple 开发者账号也未确认。在那之前 iOS 只能跑默认配置。

步骤

  1. 打开 app/ios/Runner.xcworkspace(不是 .xcodeproj)。

  2. 选中项目 → InfoConfigurations。此时应该有 Debug / Release / Profile 三条。对每一条点 +Duplicate ... Configuration,复制成:

    复制为
    Debug Debug-devDebug-uatDebug-prod
    Release Release-devRelease-uatRelease-prod
    Profile Profile-devProfile-uatProfile-prod

    一共 9 条。名字必须完全是 <原名>-<flavor>flutter run --flavor dev 就是靠这个命名约定找配置的,写成 Debug-Dev 都不行。

    做完之后把原来的 Debug / Release / Profile 删掉。

  3. 每条配置的 Runner target 那一列,选对应的 xcconfig *-devFlutter/Dev.xcconfig*-uatFlutter/Uat.xcconfig *-prodFlutter/Prod.xcconfig

    注意:Flutter 生成的 Debug.xcconfig / Release.xcconfig#include "Generated.xcconfig" 不能丢。三份 flavor 配置需要在开头补上 #include "Debug.xcconfig"(或 Release.xcconfig)——flutter buildGenerated.xcconfigFLUTTER_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 里把

    <key>CFBundleDisplayName</key>
    <string>Retail</string>
    

    改成

    <key>CFBundleDisplayName</key>
    <string>$(APP_DISPLAY_NAME)</string>
    

    改完必须先做完第 3 步APP_DISPLAY_NAME 只在三份 flavor xcconfig 里 定义,没接上就是空的桌面名。

  6. 验证:

    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 看不出关系。