对于后人,我为 iPhone 应用程序做了类似于 zoul 的事情,通过在我的项目中添加一个 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
我这样做是为了获取一个简单的修订号,而不是 svnversion 在 zoul 的解决方案中生成的更详细的字符串。
对于 Mac 应用程序,我的方法基于这篇文章,而是创建了一个 buildnumber.xcconfig 文件。在目标的构建设置下,我将对话框右下角的 Based On 值更改为 buildnumber.xcconfig。在 Info.plist 中,我编辑了以下几行:
<key>CFBundleVersion</key>
<string>${BUILD_NUMBER}</string>
<key>CFBundleShortVersionString</key>
<string>Version 1.0</string>
这样我的 About 对话框将显示类似于 Version 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
这可能不是最干净的方式,因为它需要一个干净的周期,然后才能构建新版本以在应用程序中占据一席之地,但它确实有效。