You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode中如何为不同Scheme使用不同的Plist文件?

针对Flutter iOS多Scheme配置Facebook-Info.plist的解决方案

这种分文件夹存放不同环境Facebook-Info.plist的方式完全可行,但需要在Xcode 15.2中做一些Scheme关联配置,确保编译时自动加载对应环境的文件,具体步骤如下:

1. 准备环境专属的Facebook配置文件

  • 在config/uat和config/prod目录下分别创建Facebook-Info.plist,填入对应环境的Facebook参数(比如App ID、客户端令牌等)。

2. 配置文件的Target归属

  • 打开iOS工程(ios/Runner.xcworkspace),在左侧文件树找到两个Facebook-Info.plist。
  • 选中文件后,在右侧File Inspector面板中,确保Target Membership只勾选Runner即可,无需单独绑定Scheme。

3. 确认Scheme与Build Configuration的绑定

你的项目应该已经有对应uat/prod的Build Configuration(毕竟已经在用不同的GoogleService-Info.plist),如果需要调整:

  • 点击Xcode顶部Product > Scheme > Edit Scheme,选中目标Scheme(比如uat),在Run标签页的Build Configuration下拉菜单选择对应配置(比如UAT),prod Scheme同理设置为Prod配置。

4. 添加自定义Build Phase自动拷贝对应文件

为了让不同环境编译时自动替换Facebook-Info.plist,需要添加一个Run Script:

  • 选中Runner Target,切换到Build Phases标签页。
  • 点击左上角+号,选择New Run Script Phase。
  • 替换脚本内容为:
# 根据当前Build Configuration匹配对应环境的plist文件
if [ "${CONFIGURATION}" = "UAT" ]; then
  SOURCE_PLIST="${PROJECT_DIR}/../config/uat/Facebook-Info.plist"
elif [ "${CONFIGURATION}" = "Prod" ]; then
  SOURCE_PLIST="${PROJECT_DIR}/../config/prod/Facebook-Info.plist"
fi

# 将文件拷贝到App包的主目录
cp "${SOURCE_PLIST}" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Facebook-Info.plist"
  • 把这个Run Script拖到Copy Bundle Resources阶段之前,保证拷贝动作在资源打包前完成。

5. 验证配置

  • 切换到uat Scheme编译运行,查看App包内的Facebook-Info.plist是否为uat环境配置;
  • 切换到prod Scheme重复验证即可。

另外,Flutter代码中读取该文件时,直接读取主Bundle中的Facebook-Info.plist即可,脚本已经完成了对应环境文件的替换。

内容的提问来源于stack exchange,提问作者Martin Edlman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:02:03