Как установить CURRENT_PROJECT_VERSION в xcode 8

Начиная с обновления до Xcode 8, когда я делаю сборку с fastlane, я получаю следующее сообщение об ошибке:

There does not seem to be a CURRENT_PROJECT_VERSION key set for this project

Если я захожу в Xcode>Build Settings и перехожу к Versioning, есть ключ Current Project Version, как показано ниже:

снимок экрана с версиями

Текст справки гласит, что нужно вводить целое число или число с плавающей запятой, но когда я щелкаю по полю, нет возможности ввести число в поле "Отладка" или "Выпуск". Это отличается от снимка экрана, показанного в этом яблочном техническом вопросе и ответах, так что, похоже, в Xcode произошли изменения с момента выпуска вопросов и ответов.

2 ответа

Решение

В настоящее время, когда вы получаете эту ошибку fastlane, журналы терминала перенаправляют вас на

Автоматизация номеров версий и сборок с помощью agvtool

чтобы понять, что вам нужно сделать.

Резюме

  1. Включить agvtool.

    Настройки сборки> Текущая версия проекта> $(CURRENT_PROJECT_VERSION)

    Настройки сборки> Система управления версиями> Apple Generic

  2. Настройте свою версию и номера сборки.

    Target> Info> Bundle version string, short (CFBundleShortVersionString)> "ваша версия инициализации"

    Target> Info> Bundle version (CFBundleVersion)> "ваше значение инициализации"

Это мне очень помогает.

Не. Вместо этого измените значения в файле info.plist вашего приложения.

Это значит не использовать agvtool (как я узнал).

Зачем? За прошедшие годы Apple разработала несколько способов изменения версий и номеров сборок. Многие из них сейчас устарели и плохо практикуются. Изменение CURRENT_PROJECT_VERSION изменяет значения в файле project.pbxproj вашего проекта, и если вы работаете с распределенной командой, это вызовет конфликты слияния, если другая половина команды попытается обновить, и пока они спят, вы обновили это внутреннее значение. Если вы используете модули, вы получите еще несколько конфликтов слияния для каждого модуля, которые вы добавите в проект.

Итак, CURRENT_PROJECT_VERSION?

Не используйте это.

В файле info.plist находятся эти ключи.

CFBundleVersion
CFBundleShortVersionString

использование CFBundleVersion для номера сборки вашего приложения. использование CFBundleShortVersionString для номера версии вашего приложения.

Используйте Plistbuddy, чтобы сделать это.

    <key>CFBundleShortVersionString</key>
    <string>3.0.7</string>
    <key>CFBundleVersion</key>
    <string>934</string>
</dict>
</plist>

Попробуйте скрипт ниже.

#!/bin/sh

# To make executable, use: chmod u+x Build-Versioning-Scripts/Increment_Build_Number.sh
# to locate your target's info.plist use
# ${PRODUCT_SETTINGS_PATH}

echo "----"
echo "Info.plist for target: ${PRODUCT_SETTINGS_PATH}"

buildNum=$(/usr/libexec/Plistbuddy -c "Print CFBundleVersion" "${PRODUCT_SETTINGS_PATH}")
echo "Current build #: $buildNum"

if [ -z "$buildNum" ]; then
echo "No build number found in $PRODUCT_SETTINGS_PATH"
exit 2
fi

buildNum=$(expr $buildNum + 1)
echo "Build # incremented to: $buildNum"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNum" "$PRODUCT_SETTINGS_PATH"
echo "----"
exit 0

При добавлении этого сценария в процесс сборки или архивирования на компьютере сборки это автоматически обновит номер сборки приложения. Если вы хотите увеличить номер версии своего приложения, измените CFBundleShortVersionString (Bundle versionstring, short) в info.plist вручную.

Вы можете попробовать изменить формат проекта?

Я предлагаю вам изменить эту версию формата xcode.

Другие вопросы по тегам