xcode – 如何在不污染源代码树的情况下动态设置应用程序的内部版本号?

xcode – 如何在不污染源代码树的情况下动态设置应用程序的内部版本号?,第1张

概述我正在使用git-svn,我正在尝试将我的修订版号嵌入到我的iOS应用程序中.目前,我有一个构建阶段,它运行以下脚本: SVN_REVISION=$(git svn find-rev HEAD)/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $SVN_REVISION" "$INFOPLIST_FILE" 这个问题是,由于repo总是包含以前的版 我正在使用git-svn,我正在尝试将我的修订版号嵌入到我的iOS应用程序中.目前,我有一个构建阶段,它运行以下脚本:

SVN_REVISION=$(git svn find-rev head)/usr/libexec/PListBuddy -c "Set :CFBundLeversion $SVN_REVISION" "$INFOPList_file"

这个问题是,由于repo总是包含以前的版本,脚本总是使我的Info.pList变脏.

我可以动态设置我的应用程序的内部版本号而不会弄脏我的源代码树吗?

解决方法 1)将新目标添加到“Aggregate”类型的项目中,例如你可以命名为“Update Info.pList Prefix header”;只需在对话框中将其用作“产品名称”即可.

2)使用以下源代码将Run Script构建阶段添加到此新目标:

#!/bin/shSVN_REVISION=$(git svn find-rev head)echo "#define SVN_REVISION $SVN_REVISION" > "$SCRIPT_OUTPUT_file_0"

3)将输出文件添加到脚本中,为其命名

$(CONfigURATION_TEMP_DIR)/InfoPList.pch

4)打开iOS应用程序的Build Phases.

5)将您之前创建的聚合目标添加为依赖目标(将其添加到“目标依赖关系”).这意味着Xcode将始终首先构建此目标,然后才能构建您的iOS目标.

6)打开iOS应用程序的Build Settings.

7)搜索“Info.pList预处理器前缀文件”设置,并将其更改为与步骤(3)中用于输出文件的值完全相同的值.

8)搜索“Preprocess Info.pList file”设置并确保它已启用.

9)打开当前的Info.pList文件,并将CFBundLeversion的值更改为SVN_REVISION.不要使用$(SVN_REVISION)或${SVN_REVISION};这不是构建设置或环境变量替换,这是预处理器替换,所以只需使用SVN_REVISION.

而已.每次构建iOS应用程序时,Xcode首先构建聚合目标,更新PCH文件,在构建iOS应用程序时,它将通过C预处理器运行Info.pList文件(使用PCH文件作为前缀)在将其复制到您的应用程序之前.预处理器将取代SVN_REVISION,因为它被定义为PCH文件中的宏.

重要笔记

有些人可能认为使用$(DERIVED_file_DIR)代替$(CONfigURATION_TEMP_DIR)更好.好吧,理论上它们是正确的,但实际上只有一个问题:派生文件dir对于每个目标都是不同的,而配置temp dir是相同的(它对每个构建配置只是不同的).使用派生文件目录时,PCH文件将写入聚合目标的派生文件目录,但在构建iOS应用程序时,Xcode将在iOS应用程序的派生文件目录中搜索此文件,因此无法找到文件.

有些人可能还认为最好只添加更新前缀标题的Run Script阶段作为iOS应用程序的第一个构建阶段,而不是为它创建一个单独的目标(这也将解决提到的派生文件目录问题)以上).同样,理论上的好主意但在实践中无法工作:如果请求预处理,则在第一个脚本阶段执行之前对Info.pList进行预处理,因此如果PCH文件尚未存在或尚未更新,则要么构建以错误终止,或者将过时的SVN修订写入pList文件.这就是为什么你需要一个单独的目标来完成这个任务,保证在你的实际目标之前建立.

总结

以上是内存溢出为你收集整理的xcode – 如何在不污染源代码树的情况下动态设置应用程序的内部版本号?全部内容,希望文章能够帮你解决xcode – 如何在不污染源代码树的情况下动态设置应用程序的内部版本号?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1052833.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存