你可以在 Xcode 的构建阶段更改运行脚本中的 info.plist 吗?
Posted
技术标签:
【中文标题】你可以在 Xcode 的构建阶段更改运行脚本中的 info.plist 吗?【英文标题】:Can you change info.plist inside a Run Script in Xcode's Build Phase? 【发布时间】:2021-11-12 08:02:14 【问题描述】:我正在尝试在构建阶段运行脚本中为我的Info.plist
添加一个值:
/usr/libexec/PlistBuddy -c "Add :BuildDate date `date`" "$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH"
# For debugging:
cat "$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH" | grep BuildDate
这行得通(正如 cat
所证明的那样),但似乎结果几乎立即被其他 Xcode 构建步骤覆盖。
在构建阶段根本不可能修改Info.plist
吗?我已经在网上看到了很多建议来做到这一点。
【问题讨论】:
我也试过$TARGET_BUILD_DIR/$INFOPLIST_PATH
;像上面一样,我可以看到它已添加到已编译应用程序的 plist 中,但在构建完成之前,新条目消失了。
【参考方案1】:
我假设您正在尝试修改 Info.plist
(而不是 plist.info
,因为我不知道那是什么)。
在构建阶段绝对可以创建、修改或删除Info.plist
。但是,您需要在构建过程需要使用Info.plist
之前这样做。具体时间有所不同,但越早越好 - 我建议在 Dependencies 步骤之后立即这样做。
我有一个 sample Xcode project 为 macOS 应用程序和 macOS 命令行工具执行此操作。它比您可能尝试做的要复杂得多,但看看它的配置方式可能会有所帮助。
【讨论】:
将此标记为已接受的答案,因为它是对我提出的问题的准确答案,并附有提供研究证据的回购,谢谢!但是,我想与我和其他有相同问题的人更相关的是,为什么它在特定情况下不起作用和/或可以做些什么来哄它这样做。我相信我已经在这方面发现了一两件事,因此将添加另一个描述它们的答案。【参考方案2】:所以我从来没有真正发现为什么这对我不起作用但对其他人起作用。但是,我确实遇到了a post,它为我解决了这个问题。解决方案是将Info.plist
文件添加为构建阶段的输入文件。
$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH
【讨论】:
以上是关于你可以在 Xcode 的构建阶段更改运行脚本中的 info.plist 吗?的主要内容,如果未能解决你的问题,请参考以下文章