为了后人,我做了类似于zoul为iPhone应用程序的事情,通过向我的项目添加revision.h,然后添加以下内容作为“运行脚本”构建阶段:
REV=`/usr/bin/svnversion -nc ${PROJECT_DIR} | /usr/bin/sed -e s/^[^:]*://;s/[A-Za-z]// `
echo "#define kRevisionNumber @"$REV"" > ${PROJECT_DIR}/revision.h
我这样做是为了获取一个简单的修订版本号,而不是像Zoul的解决方案中svnversion生成的更详细的字符串。
对于Mac应用程序,我根据这篇文章制定了我的方法,而是创建了一个buildnumber.xcconfig文件。 在目标的构建设置中,我更改了对话框右下角的Based On值为buildnumber.xcconfig。在Info.plist中,我编辑了以下行:
<key>CFBundleVersion</key>
<string>${BUILD_NUMBER}</string>
<key>CFBundleShortVersionString</key>
<string>Version 1.0</string>
为了使我的关于对话框显示类似于版本1.0(1234)的版本字符串,其中1234是Subversion修订号。最后,我创建了一个带有以下代码的运行脚本构建阶段:
REV=`/usr/bin/svnversion -nc ${PROJECT_DIR} | /usr/bin/sed -e s/^[^:]*://;s/[A-Za-z]// `
echo "BUILD_NUMBER = $REV" > ${PROJECT_DIR}/buildnumber.xcconfig
这可能不是最干净的方式,因为在构建新版本时需要进行清洗周期,以便在应用程序中采用新版本,但它可以工作。