我有一个脚本可以升级我的版本(0.01 x 0.01)和我的版本(1 x 1)。 Xcode 11不再起作用。

ios - iOS:如何在Xcode 11中自动升级CFBundleVersion和CFBundleShortVersionString? (我的旧脚本不再起作用)-LMLPHP

这是我的脚本:

    #!/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
失败原因:应用程序的Info.plist不包含CFBundleShortVersionString。
恢复建议:确保您的捆绑包包含CFBundleShortVersionString。
用户信息: {
bundleURL =“file:///Users/olosta/Library/Developer/Xcode/DerivedData/Formbox-cxaxehrhmxqaqabbijmxvasgmhwn/Build/Products/Debug-iphonesimulator/Formbox_Renault_BusinessDays.app/”;
}

我检查了ticket,但这对脚本没有帮助

如果我输入Xcode / General / Identity,则可以看到Xcode ios - iOS:如何在Xcode 11中自动升级CFBundleVersion和CFBundleShortVersionString? (我的旧脚本不再起作用)-LMLPHP中填充了“版本”和“内部版本”,但是如果我通过手动打开它来检查info.plist,则两个值都为空
   <key>CFBundleVersion</key>               <string></string>
   <key>CFBundleShortVersionString</key>    <string></string>

如果我直接在plist中手动填充它们,它可以工作,但是似乎Xcode中的值不再存储在该字段中了吗?你怎么看?

最佳答案

这是完整的脚本。我尝试了新旧项目。

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

编辑:
为了完成解决方案,我在plist中添加了这些键。我通过以下方式更改了现有值:
<key>CFBundleShortVersionString</key>
    <string>1.00</string>
    <key>CFBundleVersion</key>
    <string>1</string>

关于ios - iOS:如何在Xcode 11中自动升级CFBundleVersion和CFBundleShortVersionString? (我的旧脚本不再起作用),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58131830/

10-10 18:04
查看更多