我用这个作为我的项目构建阶段:在构建时更新dSYM中的CFBundleShortVersionString?
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中的版本?
我可能失去了一些东西,但琐碎的解决方案,我想的是删除的dSYM目录,如果有什么问题吧。如果您使用调试符号构建,则无论如何都会重新生成。 – 2012-11-10 16:25:08
除非让构建变更源树,否则删除dSYM并重建只会重新生成具有错误的CFBundleShortVersionString的dSYM。我希望构建不要操纵任何源代码。 (显然,我会做任何突变*我*需要做的,并检查它是否正常工作,而不是每个构建。) –
构建阶段的执行顺序是什么?自定义阶段何时执行? – Felix