如何使用脚本在 Xcode 11 中更改构建设置版本?

kid*_*per 8 versioning shell xcode11

由于 Xcode 11 已将 Version 更改为 $(MARKETING_VERSION) & Build 为 $(CURRENT_PROJECT_VERSION)

构建设置中有新字段

在此处输入图片说明

由于

xcrun agvtool new-version

xcrun agvtool new-marketing-version

不能像在 Xcode 10 上那样完美地工作

我试过这个/sf/answers/4071527561/但没有用

我只能从中获得正确的价值

echo $versionNumber 
echo $buildNumber
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能为它设置新的值呢?

kid*_*per 14

好的,我为自己找到了一个解决方案,并感谢 meetup 的一位朋友。

对于版本号 在此处输入图片说明 我用了 sed -i '' -e 's/MARKETING_VERSION \= [^\;]*\;/MARKETING_VERSION = 3.4.5;/' ${YOUR_PROJECT_NAME}.xcodeproj/project.pbxproj

例如 sed -i '' -e 's/MARKETING_VERSION \= [^\;]*\;/MARKETING_VERSION = 3.4.5;/' DemoProject.xcodeproj/project.pbxproj

请注意,这在方案设置的预操作中不起作用

至于Build版本 在此处输入图片说明 我用了 xcrun agvtool new-version xxx

例如 xcrun agvtool new-version 3.4.5b

您可以在 Build Phases 中编写这些命令

在此处输入图片说明

我不使用的原因xcrun agvtool new-marketing-version 3.4.5b是它会将实数写入 plist。

我同意曼努埃尔在邮报中的回答

有了这些,我可以管理多目标的版本控制

ps 如果你想这样做,例如,notificationService 目标,记得首先更改版本和构建号手册,让 Xcode 11 将相应的值更改为这样的变量 在此处输入图片说明

或者您当然可以通过在源代码中编辑 plist 来实现。

这是我迄今为止管理多目标版本控制的最接近的方法。