我想将当前的Subversion修订版号(如报告所示svnversion)插入到我的Xcode项目中.我设法插入的版本号进入Info.plist的$PROJECT_DIR,但是这不是一个好的解决方案,因为该文件版本.我试图将修订版插入到Info.plistbuild目录中,但是在代码签名阶段我遇到了一个错误(这是一个iPhone应用程序).
是否有一种简单的方法可以使用某些构建文件将修订号输入应用程序,以便更改版本不会更改版本化文件?我想也许我可以创建一个临时源文件,该文件将与其他文件链接并提供获取修订号的功能.但我不知道该怎么做.
我对其他解决方案不太感兴趣,即.这个agvtool.我想要的只是应用程序可用的修订版号,没有太大的魔力.
是的,这是非常相关的这个问题,但我认为这个问题是充分回答了的XCode 3.不知道这是否应合并与否.
所以 - 使用那里的类似指令,我一直有很好的效果,将构建数字编码到存档的.ipa文件中,这样Organizer会显示类似"1.0.3281"的版本(其中3281是通过下面的构建脚本附加的修订版)到我的iOS目标):
REV=`svnversion -nc | /usr/bin/sed -e 's/^[^:]*://;s/[A-Za-z]//'`
echo "REV=$REV"
echo "#define kRevisionNumber @\"$REV\"" > ${PROJECT_DIR}/revision.h
echo "INFOPLIST_PATH=${INFOPLIST_PATH}"
BASEVERNUM=`/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "${INFOPLIST_FILE}" | sed 's/,/, /g'`
echo "BASEVERNUM=$BASEVERNUM"
PLISTARG1="Set :CFBundleVersion $BASEVERNUM.$REV"
echo "PLISTARG1=$PLISTARG1"
/usr/libexec/PlistBuddy -c "$PLISTARG1" "${TARGET_BUILD_DIR}"/${INFOPLIST_PATH}
Run Code Online (Sandbox Code Playgroud)
然而,XCode 4(我已经爱上了)显然需要进行一些调整,因为这种神奇的方式只能起作用.以下是上述脚本的结果.
REV=3281
INFOPLIST_PATH=Foo.app/Info.plist
BASEVERNUM=1.0
PLISTARG1=Set :CFBundleVersion 1.0.3281
Run Code Online (Sandbox Code Playgroud)
我可以通过寻找在〜/库/.../ Foo.app/Info.plist,是的,它没有更新的正确版本,请参阅:
<key>CFBundleVersion</key>
<string>1.0.3281</string>
Run Code Online (Sandbox Code Playgroud)
显然有一个额外的文件需要更新..也许在.xcarchive?关于在哪里钻取的第一个建议?