在Xcode的Build Phase运行脚本中能否修改Info.plist文件?
问题原因
你遇到的修改被覆盖问题,不是该方案不可行,核心原因是两个:
- 自定义Run Script的执行顺序早于Xcode内置的Info.plist处理、签名步骤,后续内置步骤直接覆盖了你修改后的文件
- Xcode 14+默认开启自动生成Info.plist配置,会自动生成文件覆盖自定义修改
解决方案
- 调整Run Script执行顺序:将你添加的Run Script拖拽到Build Phase所有步骤的最后面,确保在Xcode所有内置的Info.plist处理逻辑执行完成后再修改文件
- 关闭自动生成Info.plist配置:进入Build Settings,找到「Generate Info.plist File」选项,设置为
NO,确保Xcode不会自动生成文件覆盖你的修改 - 优化脚本逻辑,避免异常:可以直接使用下方优化后的脚本,增加文件存在性校验,避免构建报错:
set -e # 修改主包内的Info.plist PLIST_PATH="${TARGET_BUILD_DIR}/${INFOPLIST_PATH}" if [ -f "$PLIST_PATH" ]; then /usr/libexec/PlistBuddy -c "Add :BuildDate date `date`" "$PLIST_PATH" fi # 可选:同步修改dSYM文件的Info.plist,方便后续排查线上问题 DSYM_PLIST_PATH="${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist" if [ -f "$DSYM_PLIST_PATH" ]; then /usr/libexec/PlistBuddy -c "Add :BuildDate date `date`" "$DSYM_PLIST_PATH" fi
- 验证修改是否生效:修改完成后Clean Build Folder(快捷键
Command + Shift + K),重新构建后检查产物内的Info.plist即可。
内容的提问来源于stack exchange,提问作者jeff-h
相关产品推荐
相关产品推荐

