如何在Xcode的Info.plist中创建自定义动态变量以添加构建日期?
在Xcode中为Info.plist添加动态构建日期(Build Date)的方法
你之前尝试用export BUILD_DATE=$(date +'%Y-%m-%d')没成功,是因为这种方式设置的是shell环境变量,Xcode的Info.plist不会自动读取这类变量——它只识别**项目构建设置(Build Settings)**里的变量,就像系统自带的EXECUTABLE_NAME、PRODUCT_NAME这些。
下面给你两种可靠的实现方式,选一种就行:
方法一:通过自定义构建设置 + 脚本自动更新(贴近系统变量的用法)
这种方法让你能像用系统变量一样,在Info.plist里写$(BUILD_DATE),每次构建自动更新值:
添加用户自定义构建设置
- 打开Xcode,选中你的项目目标(Target),切换到「Build Settings」标签页
- 点击右上角的「+」按钮,选择「Add User-Defined Setting」
- 把新变量命名为
BUILD_DATE,初始值可以随便填(比如2024-01-01)
添加Run Script构建阶段,自动更新变量值
- 切换到「Build Phases」标签页,点击「+」→「New Run Script Phase」
- 把脚本拖到「Copy Bundle Resources」之前(确保修改在打包前完成),然后把脚本内容替换成下面的代码:
# 获取当前日期,格式可以自己调整(比如'%Y-%m-%d %H:%M:%S'显示时分秒) CURRENT_DATE=$(date +'%Y-%m-%d') # 直接修改项目里的Info.plist文件,更新BuildDate对应的值 /usr/libexec/PlistBuddy -c "Set :BuildDate $CURRENT_DATE" "${PROJECT_DIR}/${INFOPLIST_FILE}"
在Info.plist中引用变量
- 打开Info.plist,添加一个新的String类型键(比如命名为
BuildDate),然后把值设为$(BUILD_DATE)
- 打开Info.plist,添加一个新的String类型键(比如命名为
这样每次构建时,脚本会先更新BUILD_DATE变量的值,Xcode再把它插入到Info.plist里。
方法二:直接在Run Script中修改Info.plist(更直接)
如果不想折腾自定义构建设置,可以直接在脚本里修改Info.plist的对应键值,步骤更简单:
在Info.plist中添加BuildDate键
- 打开Info.plist,添加一个String类型的键,命名为
BuildDate,初始值随便填
- 打开Info.plist,添加一个String类型的键,命名为
添加Run Script构建阶段
- 进入Target的「Build Phases」,添加新的Run Script Phase,拖到「Copy Bundle Resources」之前
- 脚本内容如下:
# 定义日期格式,按需调整 DATE_FORMAT='%Y-%m-%d' CURRENT_DATE=$(date +"$DATE_FORMAT") # 使用PlistBuddy工具修改最终打包用的Info.plist中的BuildDate值 /usr/libexec/PlistBuddy -c "Set :BuildDate $CURRENT_DATE" "${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}"
这种方式不需要依赖构建设置变量,脚本直接修改最终打包用的Info.plist文件,同样能实现每次构建自动更新日期。
注意事项
- 日期格式可以自己调整,比如改成
'%Y-%m-%d %H:%M:%S'就能显示具体的构建时分秒 - 一定要把Run Script阶段放在「Copy Bundle Resources」之前,否则修改不会被打包进App里
- 如果用Git管理项目,建议把Info.plist里的BuildDate值加入.gitignore,避免每次构建都产生不必要的提交
内容的提问来源于stack exchange,提问作者jeff-h
相关产品推荐
相关产品推荐

