Архивирование проекта в XCode неправильно создает пакет из нескольких приложений
Архивирование моего проекта в Xcode - это создание пакета из нескольких приложений, а не связывание моей основной цели для релиза, а это то, чего я хочу. В частности, когда я проверяю свой архив в Организаторе, он выдает мне сообщение:
"[имя проекта] не содержит приложения из одного пакета или содержит несколько продуктов. Выберите другой архив или настройте схему для создания приложения из одного пакета".
Похоже, что в схеме есть некоторые настройки, которые нужно отрегулировать, но я не могу понять, что вызывает включение других целей.
Я использую Xcode 4.0, кстати.
5 ответов
ОК, отвечая на мой собственный вопрос. Оказывается, это проблема с зависимыми проектами в XCode 4. Если это произойдет с вами, пройдите настройки сборки для всех ваших зависимых проектов (например, статических библиотек) и убедитесь, что опция "Пропустить установку" в разделе "Развертывание" установлена ДА.
Более подробно здесь: http://flakasoft.com/developer-tips/xcode-4-bug-solution-for-archiving-build-with-static-library/
Для решения этой проблемы в подпроекте (ах) необходимо исправить две вещи:
- Как обнаружил Джаред, в настройках сборки установите "Пропустить установку" на "Да"
- Под этапами сборки, изучите раздел Копировать заголовки. Если есть какие-либо заголовочные файлы, перечисленные как Личные или Общедоступные, перетащите их вниз в раздел Проект.
Я сделал следующее, чтобы это работало на меня:
- для статической библиотеки three20 я использовал cocoapods для включения файлов в основной проект... она просто избавилась от всех проблем, которые доставляла мне три20 (и их много..), кстати, я попытался заменить три20 на Nimbus... но Nimbus не хватало некоторых функций, для которых мой проект использовал Three20 для... поэтому Nimbus не помог.
- установите для параметра skip install значение yes в настройках сборки для всех других подпроектов / статических библиотек и переключите заголовки копий с общедоступного на проект на этапах сборки.
- самое главное: в под-библиотеках.. на этапах сборки я гарантировал, что назначение файлов копирования было изменено с
Absolute path
вproducts directory
,
и это было все!
подсказка: чтобы получить представление о проблемных файлах, из-за которых ваш архив создает архивный файл, а не ipa, сделайте следующее:
- Выберите архив и нажмите кнопку "Распространить".
- Выберите "Сохранить встроенные продукты".
- Нажмите Далее и Сохранить.
- Просмотрите созданный каталог в Finder.
- Подкаталог 'библиотеки' будет определять библиотеки, которые вам нужны, чтобы установить для Пропуск установки значение Да.
- в некоторых случаях
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.