有没有办法在构建阶段自动将自定义值写入包的 .plist?

Posted

技术标签:

【中文标题】有没有办法在构建阶段自动将自定义值写入包的 .plist?【英文标题】:Is there a way of automatically writing custom values to the bundle's .plist during a build phase? 【发布时间】:2012-12-03 19:05:45 【问题描述】:

我正在使用 Jenkins 设置 CI 系统,并且正在使用 agvtool 在构建时调整和设置营销和技术版本。

除了在构建时设置版本控制之外,在 .plist 中设置几个自定义值会非常有用。

这可能吗?

【问题讨论】:

嗨,你能帮我解决这个问题吗?我想从 Jenkins 向 Xcode 发送一些自定义参数。 【参考方案1】:

您可以在构建时利用“预操作”选项来编辑 Info.plist 以运行脚本。

这是一个示例脚本,它在 Plist 中增加一个名为 UserDefinedVersionNumber 的键

#!/bin/sh

#Grabs info from plist
plist=$SRCROOT"/"$INFOPLIST_FILE
currentBuild=`/usr/libexec/PlistBuddy -c "Print :UserDefinedVersionNumber" "$plist"`

#And changes it before writing out the plist again
if [ -z "$currentBuild" ]
then
    currentBuild=1
    /usr/libexec/PlistBuddy -c "Add :UserDefinedVersionNumber string $currentBuild" "$plist"

else
    currentBuild=$(($currentBuild + 1));
    /usr/libexec/PlistBuddy -c "Set :UserDefinedVersionNumber $currentBuild" "$plist"
fi

您应该可以将脚本直接输入到那个小框中,但我发现编辑和维护它会变得很麻烦,尤其是对于共享脚本。

【讨论】:

谢谢,有用的信息。无论如何做这种事情,但值来自构建系统,即假设詹金斯在构建之前或构建时抓取了一些数字,我想将它注入到包 info.plist 中。使用此方案,XCode 需要拥有/访问该号码。 我不知道 Jenkins 是什么,所以我不能肯定地说,但是所有的构建设置都是通过“从...提供构建设置”位提供给脚本的。 如果在 Jenkins 中,您可以使用 prebuild shell 脚本使用 plist buddy 修改 plist 文件。我们使用它将 git 修订哈希放入构建中,以便 QA 更轻松地确定他们正在测试的构建版本。

以上是关于有没有办法在构建阶段自动将自定义值写入包的 .plist?的主要内容,如果未能解决你的问题,请参考以下文章

将自定义 Web 部件部署到 SharePoint 2013

如何将自定义类型的列表/数组写入 HDF5 文件?

如何将自定义函数应用于 xarray.Dataset 坐标的每个值?

有没有办法将自定义工具栏放在键盘上?

有没有办法将自定义数据发送到 Mailchimp 的 API,以便将其包含在活动中?

有没有办法将自定义 QGroupBox 添加到任何小部件/布局?