You need to enable JavaScript to run this app. 多Xcode Scheme下如何对本地化InfoPlist.strings使用自定义构建设置
优惠活动
大模型
产品
解决方案
定价
更多

多Xcode Scheme下如何对本地化InfoPlist.strings使用自定义构建设置

多Scheme场景下InfoPlist.strings动态配置本地化应用名方案

下面提供两种可直接落地的实现方式:

方案1:开启InfoPlist预处理(最贴近你预期的写法)

Xcode本身支持对Info.plist关联文件开启预处理,直接支持读取自定义构建设置变量,操作步骤如下:

  • 打开项目的Build Settings,搜索Preprocess Info.plist File,将该选项设置为YES
  • 继续搜索Info.plist Other Preprocessor Flags,添加参数-traditional,避免预处理破坏字符串的双引号格式
  • 在你现有的自定义构建设置中,和之前配置APP_NAME一样,为每个Scheme对应的配置添加DE_APP_NAME的不同取值
  • 修改德语版InfoPlist.strings的代码为:
"CFBundleDisplayName" = $(DE_APP_NAME);

编译时Xcode会自动把变量替换为当前Scheme对应的值,无需额外操作。

方案2:编译阶段脚本动态替换

如果不想开启预处理功能,可以用Run Script在编译时动态修改字符串内容:

  • 打开Target的Build Phases tab,新建一个Run Script阶段,拖动该阶段到Copy Bundle Resources之前执行
  • 脚本内容填写:
# 读取自定义构建设置中的德语应用名
TARGET_DE_NAME="${DE_APP_NAME}"
# 定位编译产物中的德语InfoPlist.strings路径
DE_STRINGS_PATH="${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/de.lproj/InfoPlist.strings"
# 替换CFBundleDisplayName取值
sed -i '' "s/\"CFBundleDisplayName\" = \"[^\"]*\";/\"CFBundleDisplayName\" = \"$TARGET_DE_NAME\";/g" "$DE_STRINGS_PATH"
  • 同样提前为每个Scheme配置好DE_APP_NAME的对应取值即可,编译时脚本会自动完成替换。

注意:两种方案都需要确保你自定义的DE_APP_NAME在Debug、Release等所有编译配置下都有对应取值,避免发布时出现变量未替换的问题。如果需要适配更多语言,按照相同逻辑添加对应语言的变量和配置即可。


内容的提问来源于stack exchange,提问作者Ethan Allen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 02:06:08