Архивирование проекта в 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.