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

Xcode 14中Info.plist的CFBundleVersion同步失效问题求助

Xcode 14 构建号不更新问题的解决办法

问题根源

Xcode 14 改变了构建号的管理逻辑:不再从 Info.plist 文件自动同步构建号到项目设置,而是以项目配置里的 CURRENT_PROJECT_VERSION(也就是「通用」标签里的构建号)作为权威值。即便你用脚本修改了 Info.plist 的 CFBundleVersion,构建或归档时Xcode会用项目设置里的值覆盖它,导致显示不对。

具体解决步骤

1. 让脚本直接修改项目的构建号配置

放弃直接修改 Info.plist,转而修改项目文件中的 CURRENT_PROJECT_VERSION 值,这样Xcode会自动同步到 Info.plist 和最终包中。
示例脚本(基于Git提交次数生成构建号):

# 获取Git提交次数作为构建号
BUILD_NUMBER=$(git rev-list --count HEAD)

# 修改项目的CURRENT_PROJECT_VERSION(替换成你的项目/目标名称)
# 如果你用的是xcworkspace,把-project换成-workspace,-scheme换成你的scheme名
xcodebuild -project YourProject.xcodeproj -target YourTarget -configuration ${CONFIGURATION} CURRENT_PROJECT_VERSION=$BUILD_NUMBER

2. 调整脚本的执行时机

确保你的脚本在 Copy Bundle Resources 之前执行:

  • 在Xcode的「Build Phases」里,把你的「Run Script」阶段拖到「Copy Bundle Resources」上方;
  • 或者在「Scheme」的「Build」预操作(Pre-actions)里添加这个脚本,确保构建开始前就更新好构建号。

3. 清理Xcode缓存

Xcode14的缓存机制更顽固,旧缓存可能导致构建号不更新:

  • 按 Shift+Command+K 清理构建文件夹;
  • 手动删除 DerivedData 目录(路径一般是 ~/Library/Developer/Xcode/DerivedData);
  • 重启Xcode后重新构建/归档。

4. 检查Info.plist的变量引用

确保 Info.plist 中的 CFBundleVersion 字段使用变量引用,而不是硬编码:

  • 打开 Info.plist,把 CFBundleVersion 的值改成 $(CURRENT_PROJECT_VERSION);
  • 这样项目设置的构建号会自动同步到 Info.plist,无需手动修改文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:45:42