我将其用作项目中的构建阶段:
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 中还有很多其他的东西我do想要受到源代码控制。
如何让 dSYM 中的版本也自动更新,而不必处理源树中的 Info.plist 更改每个构建?
另外,切线:我如何查看 dSYM 中的版本?
接受的答案是正确的,但没有给出有关如何修改 dsym 的 plist 的实际详细信息。将以下行添加到构建脚本会修改 dsym 中的 plist:
cd "$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app.dSYM/Contents"
$PLISTBUDDY -c "Set CFBundleVersion $RXREVISION" Info.plist
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)