TestFlight下测试含多main_<env>.dart入口的Flutter iOS应用
解决方案
1. 配置不同构建配置对应的Flutter入口文件
你找不到入口传参位置是因为本地执行flutter run时的-t参数,在Xcode构建时是通过FLUTTER_TARGET这个配置项指定的,按以下步骤配置即可:
- 打开Xcode中的Runner项目,选中左侧的Runner target,切换到「Build Settings」页面
- 搜索
FLUTTER_TARGET,如果没有找到就点击右上角的+号,添加一个User-Defined Setting,命名为FLUTTER_TARGET - 你已经为不同flavor创建了对应的Build Configuration(如Release-dev、Release-test、Release-prod),分别给不同配置的
FLUTTER_TARGET赋值:- Release-dev 对应值:
lib/main_dev.dart - Release-test 对应值:
lib/main_test.dart - Release-prod 对应值:
lib/main_prod.dart
- Release-dev 对应值:
2. 确认Scheme的归档配置
检查你已创建的各flavor对应Scheme的归档阶段配置:
- 点击顶部Scheme选择框,选择「Edit Scheme」
- 选中test对应的Scheme,切换到「Archive」标签,将Build Configuration设置为
Release-test - 同理将prod对应Scheme的Archive阶段Build Configuration设置为
Release-prod
3. 上传逻辑
后续需要给TestFlight传测试环境包时,选择test对应的Scheme执行归档操作再上传即可,构建时会自动调用main_test.dart入口,加载测试环境的API和Firebase配置;需要上传App Store正式包时,切换到prod对应的Scheme执行归档上传,自动加载生产环境配置,无需手动传参。
你之前配置的自动复制对应GoogleService-Info.plist的脚本无需调整,只要各Build Configuration对应的plist路径配置正确即可正常生效。
内容的提问来源于stack exchange,提问作者maanick90
相关产品推荐
相关产品推荐

