Iphone XCode 4:在XCode中插入Subversion版本号

Iphone XCode 4:在XCode中插入Subversion版本号,iphone,xcode,xcode4,Iphone,Xcode,Xcode4,是的,这与XCode 3非常相关,但我认为这个问题已经得到了充分的回答。不确定这是否应该合并 因此,使用类似的说明,我一直都有很好的效果,将内部版本号编码到存档的.ipa文件中,这样Organizer就可以通过以下附加到iOS目标的内部版本脚本显示类似于1.0.3281的版本,其中3281是修订版: REV=`svnversion -nc | /usr/bin/sed -e 's/^[^:]*://;s/[A-Za-z]//'` echo "REV=$REV" echo "#define kRe

是的,这与XCode 3非常相关,但我认为这个问题已经得到了充分的回答。不确定这是否应该合并

因此,使用类似的说明,我一直都有很好的效果,将内部版本号编码到存档的.ipa文件中,这样Organizer就可以通过以下附加到iOS目标的内部版本脚本显示类似于1.0.3281的版本,其中3281是修订版:

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}
然而,我喜欢的Xcode4显然需要一些调整,因为这种魔法只能起作用。下面是上面脚本的结果

REV=3281
INFOPLIST_PATH=Foo.app/Info.plist
BASEVERNUM=1.0
PLISTARG1=Set :CFBundleVersion 1.0.3281
我可以在~/Library/../Foo.app/Info.plist中查看,是的,它确实更新了正确的版本:

<key>CFBundleVersion</key>
<string>1.0.3281</string>

很明显,还有一个文件需要更新。。也许在.xc档案中?有没有关于先钻到哪里的建议

我不确定存档角度,但以下内容在Xcode 4中对我有效,即我的应用程序在Organizer中被列为Foo 1.0.307

手动将info.plist中的CFBundleShortVersionString又名Bundle versions字符串short值设置为major.minor版本号,例如1.0

使用以下脚本将“运行脚本”构建阶段添加到项目中

REV=`svnversion -nc | /usr/bin/sed -e 's/^[^:]*://;s/[A-Za-z]//'`
BASEVERNUM=`/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "${INFOPLIST_FILE}"`
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BASEVERNUM.$REV" "${INFOPLIST_FILE}"
清理并构建清理步骤强制Xcode重新处理info.plist


顺便说一句,你也可以在你的应用程序中访问此版本号,例如在你的“关于”页面上使用[[NSBundle mainBundle]objectForInfoDictionaryKey:@CbundLeverVersion]

我不确定存档角度,但以下内容在Xcode 4中对我有效,即我的应用程序在Organizer中被列为Foo 1.0.307

手动将info.plist中的CFBundleShortVersionString又名Bundle versions字符串short值设置为major.minor版本号,例如1.0

使用以下脚本将“运行脚本”构建阶段添加到项目中

REV=`svnversion -nc | /usr/bin/sed -e 's/^[^:]*://;s/[A-Za-z]//'`
BASEVERNUM=`/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "${INFOPLIST_FILE}"`
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BASEVERNUM.$REV" "${INFOPLIST_FILE}"
清理并构建清理步骤强制Xcode重新处理info.plist


顺便说一句,如果您的脚本同时更新了两个字段,您也可以在应用程序内访问此版本号,例如在“关于”页面上使用[[NSBundle mainBundle]objectForInfoDictionaryKey:@CbundLeverVersion]

循环流化床锅炉 和 CbundleShortVersionString 然后 .xcsarchive将显示正确的版本

但你能找到更好的方法吗?
不需要更新CbundleShortVersionString的方法非常感谢。

如果您的脚本同时更新了这两个字段 循环流化床锅炉 和 CbundleShortVersionString 然后 .xcsarchive将显示正确的版本

但你能找到更好的方法吗?
无需更新CbundleShortVersionString的方式非常感谢。

将在organizer中显示,但您的plist需要一个DDBundleBasion密钥我制作的密钥。它应该保存ShortVersionString的原始值

PLIST=${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH};
REV=`svnversion -nc | /usr/bin/sed -e 's/^[^:]*://;s/[A-Za-z]//'`
BASEVERNUM=`/usr/libexec/PlistBuddy -c "Print :DDBundleBaseVersion" "${PLIST}"`
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BASEVERNUM.$REV" "${PLIST}"
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $BASEVERNUM.$REV" "${PLIST}"
不会在组织者中显示,但可以正常工作:

PLIST=${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH};
REV=`svnversion -nc | /usr/bin/sed -e 's/^[^:]*://;s/[A-Za-z]//'`
BASEVERNUM=`/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "${PLIST}"`
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BASEVERNUM.$REV" "${PLIST}"

将在organizer中显示,但您的plist需要一个DDBundleBServision密钥我制作的密钥。它应该保存ShortVersionString的原始值

PLIST=${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH};
REV=`svnversion -nc | /usr/bin/sed -e 's/^[^:]*://;s/[A-Za-z]//'`
BASEVERNUM=`/usr/libexec/PlistBuddy -c "Print :DDBundleBaseVersion" "${PLIST}"`
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BASEVERNUM.$REV" "${PLIST}"
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $BASEVERNUM.$REV" "${PLIST}"
不会在组织者中显示,但可以正常工作:

PLIST=${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH};
REV=`svnversion -nc | /usr/bin/sed -e 's/^[^:]*://;s/[A-Za-z]//'`
BASEVERNUM=`/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "${PLIST}"`
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BASEVERNUM.$REV" "${PLIST}"

唉,这正是我要寻找的工作归档,它仍然在XCode 3中工作,而现在似乎在4中没有。谢谢你的建议,杰森。谢谢。嗨,Jaysen,工作起来很有魅力,但是这个脚本当然会改变你的信息列表,你应该提交,这会导致改变,你应该提交,等等。也许最好建立这样的svn或git提交钩子?因为路径错误,所以根本不起作用。在下面放一个工作版本@JohanPelgrim是的,可能会更好,但我太懒了,这正是我正在寻找的工作归档,它仍然在XCode 3中工作,而现在似乎在4中没有。谢谢你的建议,杰森。谢谢。嗨,Jaysen,工作起来很有魅力,但是这个脚本当然会改变你的信息列表,你应该提交,这会导致改变,你应该提交,等等。也许最好建立这样的svn或git提交钩子?因为路径错误,所以根本不起作用。在下面放一个工作版本@约翰·佩尔格里姆:是的,也许会更好,但我太懒了。我只是编了一把钥匙;我需要一个新的密钥来存储原始的短版本。。。也许这个名字应该是不同的BundleBaseVersion?只是把那个键拼凑起来;我需要一个新的密钥来存储原始的短版本。。。也许名字应该不同