【问题标题】:Set Xcode bundle version to git hash将 Xcode 捆绑包版本设置为 git hash
【发布时间】:2011-11-19 08:48:22
【问题描述】:

在 Xcode 中,我想将项目包版本设置为 git 哈希,以在修订和构建之间创建唯一链接。

(我看过一些关于此的帖子,它们会增加每个版本的版本号,但对我来说这似乎太过分了,我希望有一个版本号,测试人员可以在发件人反馈时参考)。

我在构建阶段添加了以下内容作为运行脚本:

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion `git rev-parse --short HEAD`" *.plist

然后我读出了代码中的捆绑版本:

[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

但是,直到 下一个 构建,新的修订号才会出现在代码中。我认为这是因为在我的脚本运行时编译器已经读取了 plist 文件。

另外,由于 plist 在提交到 git 之后 更改了修订字符串,这会导致项目中出现烦人的差异,所以也许我毕竟不是那么聪明。

另一种方法是将修订号写入 git 忽略的文本文件 (build.txt)。但我仍然希望项目内部版本号也跟随 git。

有人知道这样做的绝妙方法吗?

【问题讨论】:

    标签: xcode git


    【解决方案1】:

    您需要安装PlistBuddy 才能使用此方法。

    我使用的方法是将脚本设置为最后的构建阶段,并在目标构建目录上进行更改。换句话说:

    BUILD_NUMBER=`git rev-parse --short HEAD`
    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "${TARGET_BUILD_DIR}"/"${INFOPLIST_PATH}"
    

    因此,在 repo 中,该值应该是 0 之类的虚拟值,并且每次都会被覆盖。这确实意味着当前的内部版本号只有在您构建之后才可用。

    【讨论】:

      【解决方案2】:

      https://gist.github.com/966838 是一个简短的 bash 脚本,符合 Apple 的 CFBundleVersion should be a monotonically increased string 要求。

      【讨论】:

        【解决方案3】:

        有很多方法可以做到这一点。

        我曾经运行一个构建后脚本来将 sha 注入到包中:

        https://gist.github.com/208825

        但更现代的方法是在 Cocoa is my Girlfriend 博客http://www.cimgf.com/2011/02/20/revisiting-git-tags-and-building/

        【讨论】:

        • 在构建阶段最后运行这个,我得到:private method sub! called for nil:NilClass (NoMethodError)
        • 对于那些想知道如何在新 Xcode 中创建这些脚本所需的 Shell 脚本目标的人:stackoverflow.com/questions/9088985
        • @Abizern 你说你曾经使用这个脚本你现在做什么?
        • @Paul.s 我不使用它们中的任何一个 - 它们不适用于 App Store 要求单调递增的内部版本号。现在我只是在我的发行版本中增加版本并将该版本作为标签添加到存储库中,这样我就知道该版本号的代码状态。
        • @Abizern 您是否有任何技术原因不使用自定义键?
        【解决方案4】:

        我为此写了much shorter script。 bash 可以完成任务;不需要其他口译员。

        【讨论】:

          猜你喜欢
          • 2021-12-16
          • 1970-01-01
          • 2017-03-19
          • 1970-01-01
          • 2016-01-04
          • 2020-07-29
          • 2015-01-18
          • 1970-01-01
          • 2021-11-14
          相关资源
          最近更新 更多