我在我的项目中使用它作为构建阶段:
export PLISTBUDDY="/usr/libexec/PlistBuddy"
export INFO="${CODESIGNING_FOLDER_PATH}/Info.plist"
export RXREVISION=`git describe --tags | perl -pi -E "s/[^-]+\-([^-]+).*/\1/"`
export RXVERSION=`git describe --tags | perl -pi -E "s/([^-]+)\-[^-]+.*/\1/"`
$PLISTBUDDY $INFO -c "add CFBundleVersion string $RXREVISION"
$PLISTBUDDY $INFO -c "set :CFBundleVersion $RXREVISION"
$PLISTBUDDY $INFO -c "add CFBundleShortVersionString string $RXVERSION"
$PLISTBUDDY $INFO -c "set :CFBundleShortVersionString $RXVERSION"
这非常适合更新已构建应用程序的 Info.plist 中的构建修订版,并且不会改变我的源代码树。
我尝试将我的更新版本脚本放在最后和链接阶段之前。无论哪种方式,它都能够影响对已构建应用程序的更改,但 dSYM 是从原始源代码树构建的。
构建的应用程序和构建的 dSYM 之间的版本号不匹配是一个问题。(HockeyApp 在这里抛出错误。)
如果我在源代码树中更新 Info.plist,我需要处理它的变化。这给我留下了两个我可以看到的选择:
- 将 Info.plist 置于源代码管理之下,并让脚本直接对其进行编辑。但这意味着我需要在每次构建后检查更改。
- 忽略 Info.plist,让脚本直接编辑它。但是在 Info.plist 中还有很多我想要在源代码控制下的东西。
我怎样才能让 dSYM 中的版本也自动更新,而不必处理我的源代码树中的 Info.plist 更改每个构建?
另外,切线:我如何查看 dSYM 中的版本?