我是新的 sh 脚本。我研究了如何自动增加内部版本号和版本号。我知道如何创建脚本,并让 XCode 在我构建应用程序时调用该脚本。但我没有看到任何解决方案可以处理我的任务。
我的问题是:
是否有任何现有的脚本可以同时做以下两件事?
1.使用-AppStore方案时通过归档增加次要版本。
2.通过构建增加构建版本。
附言
我在 XCode 4 中找到了 Version vs build,我已经实现了 @nekno 的解决方案。
在 Xcode 4.2 中:
加载您的 Xcode 项目。在左侧窗格中,单击层次结构最顶部的项目。这将加载项目设置编辑器。在中央窗口窗格的左侧,单击 TARGETS 标题下的应用程序。您需要为每个项目目标配置此设置。选择构建阶段选项卡。在右下角,单击 Add Build Phase 按钮并选择 Add Run Script。拖放新的 Run Script 阶段以将其移动到 Copy Bundle Resources 阶段之前(此时 app-info.plist 文件将与您的应用程序捆绑在一起)。在新的运行脚本阶段,保留 Shell: /bin/sh 值。将以下内容复制并粘贴到整数内部版本号的脚本区域中:
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
正如@AlonAmir 所贡献的,您可以使用以下脚本代替十六进制内部版本号:
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$((0x$buildNumber))
buildNumber=$(($buildNumber + 1))
buildNumber=$(printf "%X" $buildNumber)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
如果您有一个显示版本和构建的设置包,您可以将以下内容添加到脚本的末尾以更新版本和构建。注意:更改 PreferenceSpecifiers 值以匹配您的设置。PreferenceSpecifiers:2 表示查看 plist 文件中 PreferenceSpecifiers 数组下索引 2 处的项目,因此对于基于 0 的索引,这是数组中的第三个首选项设置。
productVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
如果您有适用于 iPad 和 iPhone 的通用应用程序,那么您还可以设置 iPhone 文件的设置:
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root~iphone.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root~iphone.plist
但我得到了错误:
Script-E14D3F9517E94A3300ABC5CA.sh: line 4: 1.0.18 + 1: syntax error: invalid arithmetic operator (error token is ".0.18 + 1")
Command /bin/sh failed with exit code 1
我想这是因为那个脚本已经过时了,无法回答这个问题。我正在使用 XCode 4.6.3