iOS: Как автоматически обновить мой CFBundleVersion и мой CFBundleShortVersionString в новом XCode 11?(Мой старый скрипт больше не работает) - PullRequest
1 голос
/ 27 сентября 2019

У меня есть скрипт, который обновил мою версию (0,01 на 0,01) и мою сборку (1 на 1).Он больше не работает с XCode 11.

enter image description here

Вот мой скрипт:

    #!/bin/bash
    rm -rf build

    Version=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
    Version=$(echo "scale=2; $Version + 0.01" | bc)

    Build=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
    Build=$($Build + 1)

    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $Build" 

    "$INFOPLIST_FILE"
        if [ "${CONFIGURATION}" = "Release" ]; then
        /usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $Version" "$INFOPLIST_FILE"    
fi 

Вот ошибкасообщение, которое я получаю сейчас, когда хочу создать или архивировать в Xcode:

Подробности

Не удалось установить запрошенное приложение
Домен: NSPOSIXErrorDomain Код: 22 * ​​1017 * Причина сбоя: Info.plist приложения не содержит CFBundleShortVersionString.
Восстановление Рекомендации: убедитесь, что ваш пакет содержит CFBundleShortVersionString.
Информация о пользователе: {
bundleURL = "file: /// Users / olosta / Library / Developer /Xcode / DerivedData / Formbox-cxaxehrhmxqaqabbijmxvasgmhwn / Build / Products / Debug-iphonesimulator / Formbox_Renault_BusinessDays.app / ";
} ​​

Я проверил, что тикет , но этоМне не поможет сценарий

Если я зайду в XCode / General / Identity, я вижу, что «Версия» и «Сборка» заполнены в XCode, enter image description hereно если я проверю свой info.plist вручную openiПри этом оба значения являются пустыми

   <key>CFBundleVersion</key>               <string></string>    
   <key>CFBundleShortVersionString</key>    <string></string>

Если я заполняю их вручную непосредственно в plist, это работает, но кажется, что значения из XCode больше не сохраняются в этих полях?Что вы думаете?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Вот полный сценарий.Я попробовал это со старыми и новыми проектами.

 #!/bin/bash
rm -rf build

Build=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
Version=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")

if [ "${Build}" = "" ]; then
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion 1" "$INFOPLIST_FILE"   
else
Build=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
Build=$(echo "scale=0; $Build + 1" | bc)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $Build" "$INFOPLIST_FILE"
fi
if [ "${Version}" = "" ]; then
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString 1.00" "$INFOPLIST_FILE"
else
Version=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
Version=$(echo "scale=2; $Version + 0.01" | bc)
if [ "${CONFIGURATION}" = "Release" ]; then
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $Version" "$INFOPLIST_FILE"
fi
fi
1 голос
/ 27 сентября 2019

Вы можете попробовать:

versionNumber="$MARKETING_VERSION"
buildNumber="$CURRENT_PROJECT_VERSION"

из это

...