Автоматизация отправки в магазин приложений iOS / WatchKit - проблема с подписью кода

У меня есть довольно типичное приложение iOS 8 iOS / ObjC / Xcode 6.4, которое включает расширение WatchKit. У меня нет проблем с ручной отправкой в ​​App Store с помощью Xcode, используя опцию меню «Архив».

Мы используем сервер сборки (Bamboo, но это не имеет значения). Сервер сборки в настоящее время автоматизирует сборки и распространение через HockeyApp, но мы вручную собираем и загружаем в iTunes Connect с помощью Xcode. Мы хотели бы автоматизировать сборки для iTunes Connect, поэтому мы уверены, что одна и та же кодовая база используется как для HockeyApp, так и для iTunes Connect (как TestFlight, так и App Store).

У меня чертовски много времени, чтобы скрипт работал для iTunes Connect, из-за (я полагаю) трех целей, которые нуждаются в подписи (приложение iOS, расширение WatchKit и приложение Watch).

Я нашел этот ответ на связанный вопрос, который оказался очень полезным: https://stackoverflow.com/a/29605731. Это предлагает ввести переменные в настройки профиля обеспечения для трех целей. Это работает для строительства. Но этот вопрос не связан с загрузкой в ​​iTunes Connect, где я вижу проблемы.

Итак, мой сценарий выглядит так:

APP_PROFILE="[the hex string]"
WATCHKITEXT_PROFILE="[another hex string]"
WATCHAPP_PROFILE="[one more hex string]"

Сначала делаю xcarchive:

xcodebuild archive -project myProject.xcodeproj -scheme "myScheme" -archivePath myProject.xcarchive  APP_PROFILE="${APP_PROFILE}" WATCHKITEXT_PROFILE="${WATCHKITEXT_PROFILE}" WATCHAPP_PROFILE="${WATCHAPP_PROFILE}"

который отлично работает. Затем экспортирую архив в .ipa:

xcodebuild -exportArchive -archivePath "myProject.xcarchive" -exportPath "myPath" -exportFormat ipa APP_PROFILE="${APP_PROFILE}" WATCHKITEXT_PROFILE="${WATCHKITEXT_PROFILE}" WATCHAPP_PROFILE="${WATCHAPP_PROFILE}"

который также сообщает об успехе. Затем мне нужно отправить .ipa в iTunes Connect с помощью инструмента командной строки Application Loader (здесь я просто проверяю):

altool --validate-app -f "myProject.ipa" -u myUsername -p myPassword

который возвращает этот набор сообщений об ошибках:

Я получаю ту же ошибку, если использую графический интерфейс Application Uploader.

Я уверен, что использую правильные профили в скрипте, так как когда я экспортирую архив в Xcode, это три выбора Xcode (этот экспорт будет подтверждать / отправлять в порядке).

Я не понимаю, где искать дальше. Любая помощь приветствуется - спасибо!

Благодаря предложению @jefflynch в Twitter, я сравнил два .ipa немного больше, чем раньше. Версия Xcode имела файл archived-extended-sizes.xcent, отсутствующий в xcodebuild .ipa. Я переместил это, и он прошел проверку. Держать это открытым, пока я не подтвердю, что это реальное решение, а не просто маскировка другой проблемы ...


person Mitch Cohen    schedule 17.07.2015    source источник
comment
Вы сделали это успешно?   -  person Mitch Cohen    schedule 18.07.2015
comment
*** Ошибка: невозможно проверить архив myProject.ipa: («Error Domain = ITunesConnectionOperationErrorDomain Code = 1091 \» Недопустимая подпись. Запечатанный ресурс отсутствует или недействителен. Убедитесь, что вы подписали свое приложение с помощью сертификата распространения, а не специальный сертификат или сертификат разработки. Убедитесь, что настройки подписи кода в Xcode верны на целевом уровне (которые переопределяют любые значения на уровне проекта). Кроме того, убедитесь, что пакет, который вы загружаете, был создан с использованием цели выпуска в Xcode, а не цель Simulator. Если вы уверены, что ваши настройки подписи кода верны, выберите \ "Очистить все \" в Xcode, удалите каталог \ "build \" в Finder и перестройте цель выпуска. Для получения дополнительной информации, обратитесь к https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html \ "UserInfo = 0x7fec4be78b80 {NSLocalizedRecoverySuggestion = Недействительная подпись. Запечатанный ресурс отсутствует или недействителен. Убедитесь, что вы подписали свое приложение сертификатом распространения, а не специальным сертификатом или сертификатом разработки. Убедитесь, что параметры подписи кода в Xcode верны на целевом уровне (которые переопределяют любые значения на уровне проекта). Кроме того, убедитесь, что загружаемый пакет был создан с использованием цели Release в Xcode, а не цели Simulator. Если вы уверены, что ваши настройки подписи кода верны, выберите «Очистить все» в Xcode, удалите каталог «build» в Finder и перестройте свою цель выпуска. Для получения дополнительной информации см. https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html, NSLocalizedDescription = Недействительная подпись. Запечатанный ресурс отсутствует или недействителен. Убедитесь, что вы подписали свое приложение сертификатом распространения, а не специальным сертификатом или сертификатом разработки. Убедитесь, что параметры подписи кода в Xcode верны на целевом уровне (которые переопределяют любые значения на уровне проекта). Кроме того, убедитесь, что загружаемый пакет был создан с использованием цели Release в Xcode, а не цели Simulator. Если вы уверены, что ваши настройки подписи кода верны, выберите «Очистить все» в Xcode, удалите каталог «build» в Finder и перестройте свою цель выпуска. Для получения дополнительной информации см. https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html, NSLocalizedFailureReason = Не удалось выполнить операцию в iTunes Store.} "   -  person hris.to    schedule 29.09.2015