在我的项目中,我使用它作为构建阶段:
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,我需要处理它的变化。这给我留下了两个我能看到的选择:
如何获得dSYM中的版本自动更新,而不必处理源代码树中的Info.plist更改每个构建?
另外,切分:我如何在dSYM中看到版本?
发布于 2012-11-11 13:59:39
dSYM包在根文件夹中也有一个具有类似值的info.plist。您可能也可以以类似的方式修改它。
另一个选项是在一个额外的.xcconfig文件中定义版本号,并将来自info.plist的版本号包含到其中,参见这里。
然后,您还可以通过使用多个独立的info.plist文件并在构建设置中引用不同的.xcconfig文件来决定需要哪种版本控制,或者发布或测试构建,而不包括源代码管理下用于测试构建的版本。
通常,我建议对每个版本的更改进行提交,因为这使得代码真正可重复,并且在源代码控制系统中也唯一地标识了它。
除此之外,Apple还指定将CFBundleVersion设置为“由一个或多个周期分隔整数组成的单调增加的字符串”,参见这里。CFBundleShortVersionString是您的营销版本,例如,您的目标是开发3.0版本。
那么,对发行版构建执行以下操作如何:用新的版本号更新CFBundleVersion,用新的营销版本(如3.0 Beta 1 )更新CFBundleShortVersion,并将两者都提交,然后标记提交发布。版本号和任何其他元数据一样是源代码的一部分,特别是如果版本号也用于触发特定代码以实现兼容性、数据库升级或其他事情(通常是这样的话)。
发布于 2014-01-28 10:06:28
接受的答案是正确的,但没有给出如何修改dsym的plist的实际细节。在构建脚本中添加以下行将修改dsym中的plist:
cd "$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app.dSYM/Contents"
$PLISTBUDDY -c "Set CFBundleVersion $RXREVISION" Info.plist 发布于 2014-11-30 14:33:35
下面是我正在使用的“从git设置CFBundleVersion”构建阶段的完整脚本:
APP_INFO_PLIST="${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
DSYM_INFO_PLIST="${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist"
BUILD_NUMBER=`git rev-list HEAD --count`
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "$APP_INFO_PLIST"
if [ -f "$DSYM_INFO_PLIST" ] ; then
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "$DSYM_INFO_PLIST"
fi(注意,它必须在Xcode 6+中的“复制捆绑资源”之后运行。在Xcode 10的新构建系统中,确保将Info.plist文件指定为其输入文件的一部分。)
https://stackoverflow.com/questions/13323728
复制相似问题