CFBundleShortVersionString值不一致

时间:2019-11-01 16:09:59

标签: ios xcode build xcode11

在“干净的构建文件夹”之后的第一个构建中,使用Xcode 11,构建阶段脚本会正确覆盖Info.plist中CFBundleShortVersionString的值。

这样,我们可以使用从git标记派生的版本号(例如10.1.2)覆盖生成的Info.plist。

这是构建脚本:

#!/bin/sh

# Extract the latest tag
describe=`git describe --tags`

# Split by '-' char. The first part is the version number, the remaining part is the build number
version=`echo $describe | cut -d '-' -f1`
build=`echo $describe | cut -d '-' -f2`

/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $version" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}" || exit 1
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $build" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}" || exit 1

第二次构建后,从MARKETING_VERSION文件内的.pbxproj获取CFBundleShortVersionString值。 MARKETING_VERSION是在每个方案的Xcode11中添加的新属性。假设版本号为999.999.999

在第一次调试运行时,CFBundleShortVersionString将为10.1.2。然后在每个成功的构建之后更新为999.999.999。就像我说的那样,如果我清理构建文件夹,则该版本会恢复为正确的值10.1.2。

在Xcode 11中,这同时发生在模拟器和设备上,并且在Xcode 10和早期版本中均能正常工作。

0 个答案:

没有答案