Несовместимое значение CFBundleShortVersionString - PullRequest
1 голос
/ 01 ноября 2019

Используя Xcode 11, при первой сборке после «чистой папки сборки» значение CFBundleShortVersionString в Info.plist корректно перезаписывается сценарием фазы сборки.

Таким образом, мы можем переопределитьсгенерированный Info.plist с номером версии, полученным из тега git, скажем, 10.1.2.

Вот скрипт сборки:

#!/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

После второй сборки значение CFBundleShortVersionString берется изMARKETING_VERSION внутри .pbxproj файла. MARKETING_VERSION - это новое свойство, добавленное в Xcode11 внутри каждой схемы. Допустим, номер версии равен 999,999,99

. При первом запуске отладки значение CFBundleShortVersionString будет равно 10.1.2. и затем 999.999.999 после каждой последующей сборки. Как я уже сказал, если я очищаю папку сборки, версия возвращается к правильному значению 10.1.2.

В Xcode 11 это происходит как на симуляторе, так и на устройстве, и нормально работало в Xcode 10и предыдущие версии.

...