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

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

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

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

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

5 ответов

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

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

Для решения этой проблемы в подпроекте (ах) необходимо исправить две вещи:

  1. Как обнаружил Джаред, в настройках сборки установите "Пропустить установку" на "Да"
  2. Под этапами сборки, изучите раздел Копировать заголовки. Если есть какие-либо заголовочные файлы, перечисленные как Личные или Общедоступные, перетащите их вниз в раздел Проект.

Я сделал следующее, чтобы это работало на меня:

  1. для статической библиотеки three20 я использовал cocoapods для включения файлов в основной проект... она просто избавилась от всех проблем, которые доставляла мне три20 (и их много..), кстати, я попытался заменить три20 на Nimbus... но Nimbus не хватало некоторых функций, для которых мой проект использовал Three20 для... поэтому Nimbus не помог.
  2. установите для параметра skip install значение yes в настройках сборки для всех других подпроектов / статических библиотек и переключите заголовки копий с общедоступного на проект на этапах сборки.
  3. самое главное: в под-библиотеках.. на этапах сборки я гарантировал, что назначение файлов копирования было изменено с Absolute path в products directory,

и это было все!

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

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

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

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

Изменить: см. https://github.com/RestKit/RestKit/wiki/Xcode-4-Archiving-Issue%3A--%27Does-not-contain-a-single-bundle%27

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

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

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

Другие вопросы по тегам