在Xcode中为多个目标设置自动增量构建号

8
我有一个“免费”和“付费”版本的应用程序,我希望同时自动增加两个构建号,因为有时候我使用“免费”版本进行测试,有时候我使用“付费”版本,这取决于我正在做什么。它们本质上是相同的代码库,我只是有两个目标,并定义了一个预处理器指令,用于“付费”版本以解锁某些功能。
我正在使用此问题中的代码: Version vs build in XCode
#!/bin/bash    
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

我认为我只需要添加另一个$INFOPLIST_FILE路径的两行代码,就像这样:

 "Print CFBundleVersion" "NEW_PATH/$INFOPLIST_FILE"

需要对其进行增量处理,但在构建另一个目标时,我如何获取到一个目标的Plist路径呢?


你能详细说明一下“路径”具体是什么意思吗? - SSaikia_JtheRocker
我指的是文件路径,即"~/Projects/iOSApp/App"。 我已经想出了问题并在下面回答了,如果你感兴趣。 - Jon Mattingly
4个回答

14

最新版Xcode更新,需在所有目标的“Build Settings”选项卡中将“Versioning System”更改为“Apple Generic”。同时,在所有目标的“Build Phases”选项卡中的“Run Script”中添加以下行:

versioning system: Apple Generic
agvtool next-version -all

agvtool increments build number for all targets agvtool可以为您完成递增工作!


8
谢谢你的答复。使用这个命令时,是否遇到过构建被取消的问题?我正在使用Xcode 11.1。 - A. Buksha
1
@A.Buksha 我也遇到了同样的问题,想知道是什么原因导致的... - Moumou
需要设置“当前版本项目”键才能开始工作。 - Jorge Paiz

5
我已经想通了,您需要使用SRCROOT变量。这将为您提供项目的基本目录。从那里,您需要手动指定要使用的info.plist文件的位置,并使用该路径运行PlistBuddy -c命令。
下面是一个示例,先增加“免费”版本,然后再增加“付费”版本:
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$SRCROOT/Pro-Info.plist")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$SRCROOT/Pro-Info.plist"

你需要确保为每个目标反转脚本,以便它在当前目标上使用$INFOPLIST_FILE变量并指定其他目标的位置。你可以将这些存储在自定义变量中或指定每个变量,而不是完全使用$INFOPLIST_FILE变量,但它们都基本上执行相同的操作。


0

为了在Xcode Server中增加构建版本号,我正在使用以下方法:

  1. 设置:Current Project Version = 1Version System = Apple Generic。可以在Apple documentation中找到更多信息。
  2. 右键单击机器人并选择编辑机器人...
  3. 打开触发器选项卡,添加前集成脚本
  4. 给一个名称(例如:设置构建版本)并编写脚本:
cd $XCS_PRIMARY_REPO_DIR # Change directory to project path 
xcrun agvtool new-version -all $XCS_INTEGRATION_NUMBER # Set build version same as integration number

Build number incremental using Xcode Bot


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接