dog*_*god 6 build-process agvtool ios
在构建/存档之前,我需要调整项目的构建和版本号.
我尝试了很多东西,但到目前为止无济于事.
我添加了一个带脚本的目标来更新数字,并将其作为第一个依赖项添加到我的主目标.但是因为我有多个依赖项,因为我在我的应用程序中有扩展并且所有依赖项都是由Xcode并行执行的(或者至少是随机顺序),这不起作用.
我为我的方案添加了一个预先行动,结果相同.在继续构建之前,Xcode没有等待我的预操作完成(我添加了一个睡眠100来测试).
由于我正在改变构建号,因此脚本在开始其他任何操作之前就可以完成,但是还有一个副作用:构建甚至因为plist文件在构建相关文件时被更改而停止目标.
让我更难的是,我想用它agvtools来设置我的版本和内部版本号.这显然会启动我无法控制的后台进程以更改plist.
免责声明:我搜索了其他答案,没有帮助.
agvtools只是在Xcode构建中不起作用.它将始终停止构建.什么工作正常PlistBuddy,虽然设置不是很好,整洁.
我在我的主程序中为构建添加了一个Pre-Action来调用我的项目中的新目标:
xcodebuild -project "${SRCROOT}/MAIN_APP.xcodeproj" -scheme BuildNumberPreProcess
Run Code Online (Sandbox Code Playgroud)
在目标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}
...
Run Code Online (Sandbox Code Playgroud)
设置版本中,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";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7282 次 |
| 最近记录: |