问题描述
我需要在构建/存档之前调整我的项目的版本号.
我尝试了多件事,但到目前为止无济于事.
我用脚本添加了一个目标来更新数字,并将其添加为对我的主要目标的第一依赖性.但是因为我有多个依赖项,因为我的应用程序中有扩展,并且所有依赖项都是由Xcode并行(或至少在随机顺序)执行的.
我为我的计划添加了一个相同的结果. Xcode不等待我的预操作在继续构建之前完成(我添加了一个睡眠100来测试).
因为我更改了构建号码,脚本可以在何时启动之前完成,但还有一个副作用:由于Plist文件已经改变,因此构建甚至停止建立相关的目标.
是什么让它变得更加困难,即我想使用 agvtools 设置我的版本和构建号码.这显然启动了超出了我的控制的后台进程来改变铭文.
免责声明:我已经搜索了其他答案,没有帮助.推荐答案
agvtools只是在Xcode构建中不起作用.它将永远停止构建. 什么工作正常是plistbuddy,虽然设置并不像漂亮而整洁.
我在我的主方案中添加了对构建的预防,以调用我的项目中的新目标:
xcodebuild -project "${SRCROOT}/MAIN_APP.xcodeproj" -scheme BuildNumberPreProcess在目标中
buildnumberpreprocess 我有一个运行脚本:
VERSION=$(head -n 1 version.txt) BUILD=`git rev-list $(git rev-parse --abbrev-ref HEAD) | wc -l | awk '{ print $1 }'` echo "${VERSION} (${BUILD})" SCRIPT="${SRCROOT}/CLIENT/Supporting Files/set-version-in-plist.sh" "${SCRIPT}" "${SRCROOT}/MAIN_APP/Supporting Files/Info.plist" ${VERSION} ${BUILD} "${SCRIPT}" "${SRCROOT}/EXTENSION/Info.plist" ${VERSION} ${BUILD} ...
set-version-in-plist.h:
#!/bin/sh # set-version-in-plist.sh # # usage: # set-version-in-plist LIST VERSION BUILD # LIST: Info.plist path & name # VERSION: version number xxx.xxx.xxx # BUILD: build number xxxxx # # Location of PlistBuddy PLISTBUDDY="/usr/libexec/PlistBuddy" echo "$1: $2 ($3)" ${PLISTBUDDY} -c "Set :CFBundleShortVersionString $2" "$1"; ${PLISTBUDDY} -c "Set :CFBundleVersion $3" "$1";
其他推荐答案
xcode有用于构建/存档的命令行工具: https ://developer.apple.com/library/ios/technotes/tn2339/_index.html
所以,您可以编写shell脚本,首先运行脚本以调整构建/版本号,然后运行Xcode Build/Archive作为命令行工具.