2015-10-16 3 views
0

Я использую xcodebuild для создания архива из рабочего пространства. Я использую следующую команду:xcodebuild создает другой архив для Xcode 7.0.1

xcodebuild -workspace MyProject.xcworkspace -scheme "MyProject" 
      -destination generic/platform=iOS archive 
      -archivePath "../PathToArchive/MyProject.xcarchive 

(я разнесены его на несколько строк для удобства чтения)

Эта команда генерирует MyProject.xcarchive. Однако он генерирует общий «Архив Xcode», а не «Архив приложений для iOS». Это не может быть отправлено в App Store.

Если я архивирую ту же рабочую область и схему с использованием Xcode.app версии 7.0.1 (7A1001) вместо xcodebuild, тогда я получаю «Архив приложений для iOS», который можно отправить в App Store.

Осмотр содержимого этих двух xcarchive s показывает, что основное отличие состоит в комплекте Info.plist. Тот, который генерируется Xcode.app, содержит дополнительный ApplicationProperties dict с версиями и деталями подписания. Тот, который генерируется xcodebuild, не содержит этих деталей в Info.plist.

Копирование Xcode.app сгенерировано Info.plist в xcarchive, сгенерировано xcodebuild «исправляет» архив, и его можно отправить в App Store. Однако это не решение, так как это означает, что я не могу построить командную строку.

Обратите внимание, что делает xcodebuild -version отпечатки:

Xcode 7.0.1 
Build version 7A1001 

Edit: иногдаxcodebuild появляется, чтобы создать правильный IOS App Архив вместо того, Generic Archive. Я не совсем уверен, почему это происходит. Это непротиворечиво.

+0

Если вы обновили, возможно, вам понадобится сделать полный чистый ctrl + alt + cmd + shift + k (я думаю), и вам нужно будет удалить все ваши производные данные. – Jeef

+0

@Jeef благодарит за советы, но чистые и удаленные полученные данные по-прежнему приводят к одной и той же проблеме – simeon

ответ

0

После многих расстройств я обнаружил причину xcodebuild, производя неправильные пакеты xcarchive.

Мне пришлось отключить параметр «Параллельная сборка» для схемы, которую я строю.

Parallelize Build Setting

После снимите отсчитывают этот параметр, строит займет намного больше времени, но xcodebuild последовательно производя «IOS App архив», а не «Родовой архив.» С включенным «Parallelize Build» xcodebuild генерирует «Общий архив» в 90% случаев, изредка генерируя правильный архив.

Поскольку я хотел, чтобы время сборки в течение Xcode оставалось неизменным, я оставил включенную опцию «Parallelize Build» для моих схем. Я продублировал схемы, которые должны быть построены с помощью xcodebuild, и отключил эту опцию только для схем развертывания.

1

Вы используете Cocoapods? Если да, попробуйте использовать предварительную версию версии gem install cocoapods --pre. У меня была проблема из-за того, что фаза экземпляров копий была где-то там не должно быть, пожалуйста, пройдите https://github.com/CocoaPods/CocoaPods/issues/4021, вы должны найти решение, которое вам подходит.

+0

Я использую Cocoapods 0.39. Спасибо за ссылку, я посмотрю на этот путь для исправления. Вызывает ли проблема Cocoapods только «xcodebuild», а не Xcode.app? – simeon

+0

Для меня это обоим. – insanoid

+0

Спасибо за помощь. Я нашел причину проблемы, и, хотя это не CocoaPods, это была настройка Parallelize Build. Который я только думал попробовать после того, как заметил, что кто-то еще упомянул об этом в трекере по проблеме CocoaPods. – simeon

Смежные вопросы