Архивирование проекта в Xcode неправильно создает пакет из нескольких приложений

Архивирование моего проекта в Xcode создает пакет из нескольких приложений, вместо того чтобы связывать мою основную цель для выпуска, чего я хочу. В частности, когда я проверяю свой архив в Organizer, он дает мне сообщение:

"[projectname] не содержит односвязного приложения или содержит несколько продуктов. Выберите другой архив или настройте схему для создания односвязного приложения.

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

Я использую Xcode 4.0 кстати.

Ответ 1

Хорошо, отвечая на мой вопрос. Оказывается, это проблема с зависимыми проектами в XCode 4. Если это произойдет с вами, просмотрите параметры сборки для всех ваших зависимых проектов (например, статические библиотеки) и убедитесь, что опция "Пропустить установку" в разделе "Развертывание" установлена к YES.

Подробнее здесь: http://flakasoft.com/developer-tips/xcode-4-bug-solution-for-archiving-build-with-static-library/

Ответ 2

Чтобы решить эту проблему, в подпроекте необходимо установить две вещи:

  • Как выяснил Джаред, в разделе "Настройки сборки" установите "Пропустить установку" на "Да"
  • В разделе "Фазы сборки" просмотрите раздел "Копирование заголовков". Если есть какие-либо файлы заголовков, перечисленные как частные или общедоступные, перетащите их в раздел "Проект".

Ответ 3

Я сделал следующее, чтобы заставить его работать для меня:

  • для статической библиотеки three20 я использовал cocoapods, чтобы включить файлы в основной проект.. он просто избавился от всех проблем, которые три20 давал мне (и они много.) Кстати, я попытался заменить tr20 на Nimbus.., но у Nimbus не хватало некоторых функций, которые мой проект использовал для работы в режиме tr20. так что Нимбус не помог.
  • установить пропустить установку до да в соответствии с настройками сборки для всех других подпроектов/статических библиотек и переключить заголовки копий из публики в проект в фазах сборки
  • : в подбиблиотеках. В фазах сборки я гарантировал, что назначение копировать файлы было изменено с Absolute path на products directory.

и все!

подсказка:, чтобы получить представление о файлах с нарушением, которые заставляют ваш архив создавать файл архива, а не ipa:

  • Выберите архив и нажмите кнопку "Распространять".
  • Выберите параметр "Сохранить встроенные продукты".
  • Нажмите "Далее" и "Сохранить".
  • Просмотрите созданный каталог в Finder.
  • В подкаталоге "library" будут указаны библиотеки, которые необходимо установить для параметра "Пропустить установку" на "Да".
  • в некоторых случаях usr/local/include будет идентифицировать файлы заголовков преступника, которые вам нужно переместить из Public в Project, или файлы, которые вы должны изменить, от абсолютного пути к каталогу продуктов. но этот каталог (например, usr/local/include) изменяется в зависимости от структуры вашей подкаталога

Ответ 4

У меня была фаза сборки файлов копий, о которой я забыл (скопировал некоторые шрифты в ~/Library/Fonts). После удаления этой фазы сборки она работала нормально.

Если ни один из вышеперечисленных ответов не устранит проблему, я рекомендую экспортировать архив в поисковик и посмотреть, что за пределами пакета .app.

Изменить: см. https://github.com/RestKit/RestKit/wiki/Xcode-4-Archiving-Issue:--'Does-not- содержат-а-одинарной сверток "

Ответ 5

У меня также была та же проблема: "[projectname] не содержит односвязного приложения или содержит несколько продуктов. Выберите другой архив или настройте схему для создания односвязного приложения". после обновления до xcode5.

проблема заключалась в том, что пустые поля в моих настройках сборки для 'release' были пустыми. Я думаю, xcode4 автоматически переключился на настройку отладки.

anwyays - мое исправление заключалось в том, чтобы найти все те настройки освобождения, которые были пустыми, и установить их в настройке отладки. В частности, это был файл Info.plist.