2

我有一份 Jenkins 工作,可以将我的 iOS 应用程序上传到 HockeyApp。我可以在我的日志中看到这个错误

Error uploading to HockeyApp: {"status"=>"error", "message"=>"Bundle Version does not match. Expected value: 228 Actual value: 15"}

但该应用程序似乎已成功上传并可从 Hockey 下载。有人可以解释这个错误是什么意思吗?

我设置我的内部版本号以匹配我的 Jenkins 内部版本号,即在这种情况下为 228。我不知道 15 的实际值是指什么?

谢谢!

4

1 回答 1

0

我创建了一个脚本,我可以将其放入任何 Xcode 项目文件夹并从运行脚本调用,该脚本将更新应用程序的 Info.plist 和 dSYM,以便内部版本号匹配。然后可以将其上传到 HockeyApp 和 iTunes Connect for TestFlight 和 App Store 等服务。

我更喜欢在 Xcode 的 Run Script 之外管理脚本,因为我可以更轻松地编辑它并保持项目文件的内容更小。我还可以独立于项目文件对脚本进行版本控制。

此脚本中的内部版本号仅使用当前日期设置。还有其他方法可以生成唯一的内部版本号。Jared Sinclair 的博客介绍了一种方法,该博客使用 Git 哈希进行最新提交。我正在使用的脚本使用的时间戳可以缩短到一分钟。我发现知道何时创建构建并将构建号加倍作为时间戳很有用,我可以立即看到日期。就我的目的而言,它足够独特。

http://blog.jaredsinclair.com/post/97193356620/the-best-of-all-possible-xcode-automated-build

要点:https ://gist.github.com/brennanMKE/c4640b7a2cf39888d858

#!/bin/sh
set -e

# Purpose: Updates Info.plist for app and dSYM to a unique value for each build.

# Usage:
# Add as a Run Script in Xcode Build Phases

# UPDATE_SCRIPT=${PROJECT_DIR}/update_build_number.sh
# if [ -f ${UPDATE_SCRIPT} ]; then
#     sh ${UPDATE_SCRIPT}
# fi

BUILD_NUMBER=`date "+%Y.%m.%d.%H%M"`
APP_INFO_PLIST=${TARGET_BUILD_DIR}/${INFOPLIST_PATH}
DSYM_INFO_PLIST=${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist

if [ -f ${APP_INFO_PLIST} ]; then
    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "${APP_INFO_PLIST}"
    echo "Updated ${APP_INFO_PLIST}"
else
    echo "Could not find ${APP_INFO_PLIST}"
fi

# Only the Release Configuration creates the dSYM
if [ "${CONFIGURATION}" = 'Release' ]; then
    if [ -f ${DSYM_INFO_PLIST} ]; then
        /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "${DSYM_INFO_PLIST}"
        echo "Updated ${DSYM_INFO_PLIST}"
    else
        echo "Could not find ${DSYM_INFO_PLIST}"
    fi  
fi
于 2015-12-30T20:33:40.960 回答