2015-03-26 3 views
2

У меня есть работа Jenkins, которая загружает приложение iOS в HockeyApp. Я могу видеть эту ошибку в моих журналахВерсия пакета ошибок HockeyApp не соответствует

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

Но приложение, кажется, успешно загружен и доступен для загрузки из хоккея. Может кто-нибудь объяснить, что означает эта ошибка?

Я установил свой номер сборки в соответствии с моим номером сборки Jenkins i.e 228 в этом случае. Я понятия не имею, к чему относится фактическое значение 15?

Спасибо!

+0

Пожалуйста, обратитесь в службу поддержки HockeyApp. Если вы изменяете номер сборки в Info.plist как часть процесса сборки, вы также должны изменить то же самое в Info.plist dSYM. – Kerni

+0

@ Kerri Я думаю, проблема в том, что Дженкинс собирал старый dSYM (пакет 15). Теперь я убеждаюсь, что старые двоичные файлы .ipa и .dSYM удаляются перед каждой новой сборкой Jenkins, и ошибка исчезла. Мне не нужно было изменять Info.plist из dSYM в моем сценарии оболочки задания Jenkins. –

+0

Здесь вы можете найти ответ: http://stackoverflow.com/questions/13323728/update-cfbundleshortversionstring-in-dsym-at-build/34536807#34536807 – Brennan

ответ

0

Я создал сценарий, в который я могу попасть в любую папку проекта Xcode и позвонить из сценария запуска, который обновит Info.plist для приложения и dSYM, чтобы совместить номер сборки. Затем он может быть загружен в службы, такие как HockeyApp и iTunes Connect для TestFlight и App Store.

Я предпочитаю управлять скриптом вне сценария запуска Xcode, потому что я могу его легко отредактировать и сохранить содержимое файла проекта намного меньше. Я также могу управлять версией сценария независимо от файла проекта.

Номер сборки в этом скрипте устанавливается только с текущей датой. Существуют и другие способы создания уникального номера сборки. Один из подходов рассматривается в блоге Джареда Синклера, который использует Git hash для последней фиксации. Используемый сценарий использует временную метку, которая уменьшается до минуты. Мне полезно знать, когда была создана сборка, и с номером сборки double как меткой времени я могу сразу увидеть дату. И для моих целей это достаточно уникально.

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

Gist: 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 
Смежные вопросы