Xcode 4 + iOS 4.3: "Не існує пакувальника для типу архіву"


76

Я щойно перейшов на Xcode 4 і намагаюся створити спеціальну збірку попереднього проекту. Кожного разу, коли я використовую опцію "Архів", у мене або у вікні Організатора взагалі немає архіву, АБО є архів, але немає можливості упакувати його як .ipa, оскільки "Для типу архіву не існує пакувача ".

Хто-небудь отримував adhoc-збірки, що працюють під Xcode 4 для проекту, який було перенесено з Xcode 3.2?


подібне запитання, але також немає відповіді :-( stackoverflow.com/q/5265292/509535
Манні

спробуйте спочатку
очистити

хтось знає, як створити та додати такий пакувальник?
Роб Агар

У мене не було проблем з переміщенням проекту. У мене є резервна копія старого проекту. Я перевірю це і повідомлю вас. Редагувати: Мій старий проект читався як проект OS-X. Мені довелося відредагувати файл проекту та змінити ціль збірки. Це вирішило мою проблему. Я сумніваюся, що це проблема у вашому випадку.
Steve McFarlin

Відредагуйте свою схему. Що у вас є як конфігурація збірки для дії Архів? (Проект -> Редагувати схему -> Архів)
Стів Макфарлін

Відповіді:


134

у вас можуть бути зв’язані проекти (наприклад, бібліотеки) у вашому основному проекті. Перейдіть до налаштувань збірки цих проектів і встановіть для параметра "Пропустити встановлення" (категорія розгортання) значення "Так", але залиште "Пропустити встановлення" основного проекту значення "Ні". Створіть, заархівуйте, і ви зможете вибрати пакет ipa.


У моєму випадку я також містив заголовок, скопійований з підпроекту, у мій вихідний код. І тоді це спрацювало.
Майк Бевз,

5
+1 Не уявляю, скільки годин я втратив би, якби ви не опублікували цю відповідь.
cduhn

+1 врятував мене, дякую! Важливо, щоб люди розуміли, що це потрібно робити в самій статичній бібліотеці, а не у вашій програмі. Це мене трохи зачепило.
jj0b

4
Гаразд, просто щоб заощадити час інших людей, копаючись у цій публікації. На думку Джоша Брауна (в одній із відповідей нижче), лише зміна "Пропустити встановлення" не спрацює, ЯКЩО у вашому основному проекті є інший цілий проект (тобто, не тільки файли .a). Додатковим кроком, який вам потрібно зробити в цьому додатковому проекті, є ... "У цьому проекті перейдіть до Фази збірки, а в розділі Копіювати заголовки перемістіть усі заголовки із загальнодоступного та приватного розділів у розділ". - В оригінальній відповіді він також згадав про перегляд вмісту файлу .xcarchive, щоб побачити, що потрібно перемістити
Хлунг,

ДЯКУЮ ДЯКУЮ ДЯКУЮ!
theDuncs

25

Дякую, але мені потрібні були 3 кроки для повного вирішення проблеми з моєю структурою проекту:

  1. встановіть для властивості Target Build Settings / "Skip Installation" значення "YES" для кожного проекту залежностей

  2. очистіть властивість "Налаштування цільової збірки" Каталог встановлення "для кожного проекту

  3. для кожного проекту перемістіть усі заголовки з розділу "Фази побудови / Параметри побудови / Копіювати заголовки" Відкритий / Приватний до проекту


3
Крок No3 зробив це за мене! Дякую!
Ерік,

Я хотів би, щоб я міг проголосувати вас десять разів. №3 подбав про проблему для мене.
mmc

Чудово, це допомагає мені після додавання двох кроків: очищення та повторне відкриття XCode. Дякую!
Дмитро Шашлов

Приєднуючись до подяк, а також повідомляючи людям не змінювати Директорію встановлення головного проекту (має бути $ (LOCAL_APPS_DIR)) - Архів взагалі не відображатиметься
Одед Бен Дов,

1
Дуже дякую. Ця приватна / загальнодоступна річ спрацювала для мене.
Sedat Kilinc

9

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

  1. Знайдіть архів в Організаторі, клацніть правою кнопкою миші та виберіть Показати у Finder.
  2. Клацніть правою кнопкою миші файл .xcarchive у Finder і виберіть Показати вміст пакета.
  3. Знайдіть папку Products і подивіться, що в ній є. У папці Products повинна бути лише папка Applications, а папка Applications повинна містити лише одну програму для iPhone (YourProject.app).

Якщо на кроці 3 ви знайдете статичну бібліотеку (<some-library> .a) або безпосередньо в розділі «Продукти», або в підпапці, перейдіть до Xcode і виберіть проект, який створив статичну бібліотеку (ви повинні мати можливість визначити, який проект вона базується на назві статичної бібліотеки). Перейдіть до налаштувань збірки та виберіть ціль, а потім встановіть для параметра «Пропустити встановлення» значення «Так».

Якщо на кроці 3 ви знайдете файли заголовків (<some-header> .h) або безпосередньо в розділі Продукти, або в підпапці, перейдіть до Xcode і виберіть проект, що містить ці заголовки. Ви зможете знайти проект на основі префіксу, який використовується в іменах файлів заголовків. У цьому проекті перейдіть до Фази побудови, а в розділі Копіювати заголовки перемістіть усі заголовки із загальнодоступного та приватного розділів у розділ Проект.

Завдяки цій відповіді та цій відповіді та цій відповіді за допомогу мені вирішити цю проблему.


1
"У цьому проекті перейдіть до Фази збірки, а в розділі Копіювати заголовки перемістіть усі заголовки із загальнодоступного та приватного розділів у розділ". <- це працює! Дякую!
Хлунг,

5

Ось ще дві поради, які ми знайшли корисними з цією проблемою ... не відповіді, але вони можуть заощадити комусь БАГАТО часу, що возиться близько 8 /

Якщо ви використовуєте статичні бібліотеки, які НЕ будуються xcode4, то обхідне рішення "розгортання-> пропустити встановлення" для них не спрацює. Для цього потрібно навколо НЕ додавати їх до проекту та переконайтесь, що їх шляхи знаходяться в заголовках та / або шляхах пошуку бібліотеки у налаштуваннях збірки, а записи -lblah додані до прапорів Linker.

Крім того, якщо у вас є статичний lib, встановлений як цільова залежність (наприклад, у нас був встановлений libjson.a, і я майже впевнений, що це правильно / логічно), ви просто не зможете створити .ipa немає значення що. Ми витратили більше, ніж цілий день, танцюючи з цією дурною проблемою, і врешті-решт просто усунувши це вирішили. Особисто я думаю, що це дійсно повинно залишити невдалий проект ... але це працює так.


Дякую, це теж спрацювало у мене. "Пропустити інсталяцію" не мало жодного ефекту, і нарешті рішенням було видалення залежності проекту / цілі lib від цілі мого проекту (і замість цього я просто додав файл ".a" до пов'язаних бібліотек проекту, + продовжував посилатися на файли заголовків )
André Morujão

3

Для того, щоб зрозуміти, який проект / бібліотека / компонент, що заважає Xcode зробити належний архів, зробіть це:

Знайдіть архів в Організаторі, клацніть правою кнопкою миші та покажіть у пошуку. Це покаже файл .xcarchive. Клацніть правою кнопкою миші та покажіть вміст пакета. Тепер загляньте в папку Продукти. Швидше за все, буде більше, ніж просто папка Програми з однією програмою для iPhone всередині.

У моєму випадку була структура папок usr / local / lib, що містила libOAuthConsumer_iPhone.a, і коли я шукав це в Xcode, я справді знайшов інший проект, де я не встановив Пропустити встановлення на ТАК. Можливо, це не так просто для всіх, але заглянувши всередину пакету, слід принаймні дати вам вказівник щодо того, який компонент заплутує процес архівування.


1

Пропустити встановлення мені не вдалося. Я вирішив цю проблему, перенісши всі заголовки, позначені як загальнодоступні, до проекту. Зараз я працюю в робочій області зі статичним lib та ipad proj. Здається, що виникає помилка або щось із xcode кожного разу, коли ви хочете створити свій продукт за допомогою пов'язаного проекту, xcode збирає обидва, а Організатор не показує можливості спільного використання ipa.


1

Це кроки для вирішення зазначеної вище проблеми в xcode 4.2

1: "Пропустити встановлення" до YES для всіх бібліотек третьої частини, які додаються. "Пропустити для встановлення" для НІ для вашого проекту. Ви можете отримати доступ до "Пропустити для встановлення" у налаштуваннях збірки.

2: Виберіть заголовки вашої сторонніх бібліотек на лівій панелі Навігатора.

2.1: Праворуч знаходиться панель Utililtes. Покажіть і сховайте її за допомогою перегляду -> утиліти-> показати / приховати утиліти (command-Option-0) або за допомогою третьої кнопки в сегментованому елементі керування на панелі інструментів

2.2: вибір інспектора файлів (command-option-1)

2.3 оберіть Цільове членство та змініть параметр «Проект» із державного чи приватного

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