Проект архівації в Xcode неправильно створює пакет додатків


170

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

"[ім'я проекту] не містить програми з одним пакетом або містить декілька продуктів. Будь ласка, виберіть інший архів або налаштуйте схему, щоб створити програму з одним пакетом."

Здається, що в схемі є якесь налаштування, яке потрібно скорегувати, але я не можу зрозуміти, що спричиняє включення інших цілей.

До речі, я використовую Xcode 4.0.


Відповіді:


251

Гаразд, відповідаючи на моє власне запитання. Виявляється, це проблема із залежними проектами в XCode 4. Якщо це трапляється з вами, перегляньте "Налаштування збірки" для всіх ваших залежних проектів (наприклад, статичних бібліотек) і переконайтесь, що параметр "Пропустити встановлення" в розділі "Розгортання" встановлений до ТАК.

Детальніше тут: http://flakasoft.com/developer-tips/xcode-4-bug-solution-for-archiving-build-with-static-library/


1
Ви, пане, мій герой! Я б не знайшов цього легко: П
Ендрю Натолі

6
Змінив його на "ТАК" ... все ще не вдається. :(
Джо Д'Андреа

8
Пропустити встановлення потрібно встановити на "Так" лише у статичній бібліотеці, а не на проекті чи цілі. Ця публікація в блозі про спеціальне розповсюдження однаковою мірою стосується версій
jj0b

8
Деякі бібліотеки (наприклад, CorePlot) також вимагають змінити розділ Копіювання заголовків на етапі їх збирання. Тому переконайтеся, що ви також подивитесь відповідь Райана.
Тім Сваст

2
Я також повинен перемістити всі файли заголовків (бібліотеки статики) у цілі "Фази збірки", у "Копіюванні заголовків" я перемістив їх із "Загальнодоступних" у "Проект".
Hlung

151

Для вирішення цієї проблеми в підпроектах (проектах) необхідно виправити дві речі:

  1. Як виявив Джаред, у розділі "Налаштування збірки" встановіть "Пропустити встановлення" на "Так"
  2. У розділі Фази збірки вивчіть розділ Копіювання заголовків. Якщо є файли заголовків, перелічені як приватні або загальнодоступні, перетягніть їх до розділу Проект.

7
Я дуже люблю тебе чувак! : D
arielcamus

5
Я виправив усі налаштування "Пропустити встановлення", але мені не вистачало розділу "Копіювання заголовка", дякую!
Томас Ейнвуллер

2
Я використовую три20. Цей проект має файли заголовків, перелічені як приватні або загальнодоступні, але якщо я переміщу їх у розділі проекту, він не компілюється. Будь-яка пропозиція?
Бриз

19
Перестаньте використовувати Three20, навіть якщо ви вирішите проблему з Xcode. Я повністю серйозний!
Адам Ебербах

2
Якщо у вас є численні бібліотечні проекти, як у нас, і у вас важко розібратися, для якої програми "Пропустити встановлення" бібліотеки встановлено "Ні" або які файли заголовків викликають проблему, спробуйте це: Виберіть архів і натисніть кнопку "Розподілити". Виберіть варіант "Зберегти вбудовані продукти". Натисніть кнопку Далі та збережіть. Перегляньте створений каталог у Finder. Підкаталог "бібліотеки" визначатиме бібліотеки, які потрібно встановити "Пропустити встановлення" на "Так". Usr / local / include визначає файли заголовка винуватця, які вам потрібно перейти від Public до Project.
Sunil Gowda

10

Я зробив наступне, щоб змусити мене працювати:

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

і це було все!

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

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

Я дав би вам 10 зірок, кількість рішень, які я читаю, поки не знайду ту, яка допомогла. Я просто натиснув на файли, знайдені на кроці 6, і позначив їх у цільовій області членства від загальнодоступної до проекту, нічого не потрібно.
Крісті Балуша

рада, що могла допомогти! Причиною я написав це - б / ци пройшов через те, що ви зробили .. я прочитав, як, можливо, 20 відповідей, перш ніж я почав розуміти, що відбувається .. :)
abbood

Чи можете мені хтось пояснити крок 6? Я не розумію, що означає "usr / local / include ідентифікує файли заголовка винуватця" і де / як я повинен перевірити ці файли
Андрій Ф

@ CristiBăluță Як саме ви знайшли файли та де в налаштуваннях / меню? У мене така ж проблема з XCode 11.2.1, і я не маю особливого досвіду роботи з xcode. Дякую.
Андрій Ф

Я знайшов, що / usr / local / include - це папка всередині архіву (разом із папкою бібліотек), але в моєму загальному архіві немає жодної з них
Андрій Ф

1

У мене була фаза збирання файлів копіювання, про яку я забув (скопіював деякі шрифти в ~ / Бібліотека / Шрифти). Після видалення цієї фази збірки вона спрацювала чудово.

Якщо жоден із наведених відповідей не вирішує проблему, рекомендую експортувати архів до пошуку та переглянути те, що знаходиться поза пакетом .app.

Редагувати: див. Https://github.com/RestKit/RestKit/wiki/Xcode-4-Archiving-Issue:--'Does-not-contain-a-single-bundle '


0

У мене також була така ж проблема "[ім'я проекту] не містить програми з одним пакетом або містить кілька продуктів. Будь ласка, виберіть інший архів або налаштуйте схему, щоб створити програму з одним пакетом." після оновлення до xcode5.

Проблема полягала в тому, що купа полів у моїх настройках збірки для "випуску" була порожньою. Я думаю, що xcode4 автоматично перейшов до налаштування налагодження.

anwyays - моє виправлення було знайти всі ті параметри випуску, які були порожніми, і встановити їх на налаштування налагодження. Зокрема, це було налаштування файлу Info.plist.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.