"Предупреждение: приложения iPhone должны включать архитектуру armv6" даже с установленным конфигурационным набором

Прошло много времени с тех пор, как мне пришлось настроить параметры сборки проекта. После обновления до недавнего SDK у меня возникли проблемы с созданием моей конфигурации специального распределения.

Build генерирует это предупреждение и ошибку:

предупреждение: приложения для iPhone должны включать архитектуру armv6 (текущий ARCHS = "armv7")

iPhone / iPod Touch: исполняемый файл приложения не имеет необходимой архитектуры. Должна присутствовать хотя бы одна из следующих архитектур: armv6 (-19033)

Однако в моем проекте я думал, что все настроено правильно:

  • Архитектура: Стандартная (armv6 armv7)
  • Базовый SDK: последняя версия iOS (в настоящее время установлена ​​на iOS 4.2)
  • Допустимые архитектуры: armv6 armv7

альтернативный текст

Я убрал все цели.

Я ценю любые советы.

17 ответов

Решение

Если используется Xcode 4.2 или выше, попробуйте следующее:

  1. Нажмите на название вашего проекта (в левом столбце), а затем на цель:

  2. Перейдите на вкладку "Настройки сборки" (в правом столбце):

  3. Нажмите строку "Выпуск" или "Распространение" в разделе "Архитектура" и выберите "Другие...":

  4. Дважды щелкните выделенную строку с именем "$(ARCHS_STANDARD_32_BIT)" в появившемся всплывающем окне и замените его, введя "armv6". Затем добавьте новую строку с помощью кнопки "плюс" в левом нижнем углу всплывающего окна и введите "armv7", затем нажмите "Готово":

Обновление: вы должны добавить armv7s для iPhone 5. (И бросьте armv6, если собираете с Xcode 4.5 или выше, который больше не поддерживает armv6.)

Вот и все. Теперь вы сможете собирать / архивировать без ошибок.

Если это все еще не работает, посмотрите этот ответ от justinxreese, который предлагает добавить записи для armv6 и armv7 в разделе "Необходимые возможности устройства" в вашем файле info.plist.

Если вы снимите флажок "Построить только активную архитектуру", тогда будут собраны все допустимые архитектуры.

Обновление: это больше не применимо с Xcode 4 - следуйте инструкциям Ника для Xcode 4 и позже.

У меня была эта проблема даже после того, как я следовал принятому ответу и нашел следующее:

В вашем Info.plist добавьте запись для Требуемые возможности устройства. Это должен быть массив и иметь две записи.

  • Элемент 0: armv6
  • Элемент 1: armv7

Это будет выглядеть так:

Ввод требуемых возможностей устройства

В дополнение к ответу Ника о Xcode 4.2 вам также может понадобиться просмотреть файл info.plist. Похоже, что новые проекты, запущенные в Xcode 4.2 по умолчанию, указывают 'armv7' в 'Требуемые возможности устройства'. Вам нужно будет удалить это, если вы хотите поддерживать устройства под управлением armv6 (например, iPhone 3G).

Удалите armv7 из "Требуемые возможности устройства" в yourProjectName-Info.plist

Обновление ios 6

Изменения в Xcode 4.5.x для ios 6

  1. Xcode 4.5.x (и более поздние версии) не поддерживает генерацию двоичных файлов armv6.
  2. Теперь включает поддержку iPhone 5/armv7s.
  3. Минимальная поддерживаемая цель развертывания с Xcode 4.5.x или новее - iOS 4.3.

У меня тоже была эта пробема. Я просто установил цель развертывания на 4.3 и оставил только архитектуру armv7, и это сработало. На данный момент почти у всех есть 5, так что 4,3 в порядке.

Попробовав смесь этих ответов, я наконец наткнулся на то, чтобы все заработало. Я так разозлился на Apple прямо сейчас. Еще час они меня растеряли. Вот мой конфиг.

введите описание изображения здесь

Для меня это не работает с каждым ответом. но я пытаюсь TARGETS > Architectures > Debug и добавляю новую строку с кнопкой плюс, и набираю 'armv6'(with out '), затем нажимаю Done.

и, наконец, CMD+B, а затем щелкните правой кнопкой мыши PrjectName.app(в папке "Продукты") > Открыть в Finder > Сжать "PROJECT_NAME.APP" (в Debug-iphoneos) > Загрузить в AppStore

это моя настройка экрана.

если у вас есть включить проект, пожалуйста, настройте все это. Надеюсь на вашу помощь.

Я должен был быть уверен, что изменил эти параметры в настройках Target и Project в xCode 4.3.2 после того, как сделал это и настроил его для сборки как для armv6, так и для armv7 везде, где я мог представить свое приложение.

В целях безопасности я также вышел из xCode между внесением изменений и выполнением цикла очистки, сборки и архивирования.

Вау, я обновляю / отправляю приложения примерно каждые 6 месяцев. Каждый раз, когда я делаю это, я должен выучить "новый" способ сделать это...

Те же проблемы, что описаны выше при работе iOS 5.1 и Xcode 4.3.2

Спасибо за сообщения! Я потратил некоторое время, обновляя все настройки проекта до armv6, armv7, но без радости. Когда я установил для параметра "Только активная сборка" значение "Нет", я получил ошибку сборки при помещении обоих объектов в один каталог.

К счастью, я заметил, что вы, ребята, изменили настройки целевой сборки. Это то, что в итоге сработало (armv6, armv7 и установка "только для активной архитектуры" в "Настройки сборки цели") на "Нет". Как заявление об отказе от ответственности, я уже установил все архитектуры на armv6, armv7 в настройках проекта.

В любом случае, спасибо за помощь, Брент

Я попробовал все ответы выше, ни один не решил мой вопрос. Поэтому я создаю новый проект и проверяю параметры сборки по одному. Только "Файлы альтернативных разрешений" отличаются. Не удалось собрать проект имеет значение armv7. Удалите его, затем очистите->build-> архив. Добиться успеха! Надежда может решить ваш вопрос

Вот документация Apple:

Технические вопросы и ответы QA1760

Там говорится о двух вещах, которые вы должны понять правильно:

  1. добавлять armv6 в настройки сборки архитектуры
  2. Установить только активную архитектуру No,

Если это по-прежнему не помогает, дважды проверьте, действительно ли вы меняете параметры сборки архитектуры для правильной конфигурации сборки - я потратил полчаса на то, чтобы поиграть с неправильной и удивляться, почему это не сработало...

Выбрать Edit Scheme... в меню "Продукт" выберите схему "Архив" в левом списке и проверьте конфигурацию сборки. Измените значение, если оно не соответствует ожиданиям.

Попробуйте изменить цель развертывания на что-то более высокое, чем процессор armv6. Настройки для xCode ссылаются на уровень операционной системы, например: версия iOS № {3.1, 3.2, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1}

(i) Вы можете установить это на вкладке настроек сборки или на вкладке сводки. Начните в левом верхнем углу окна Project Navigator, в котором перечислены все файлы. Нажмите на самый верхний, который имеет синий значок.

(ii) Если вы планируете использовать программируемую схему шейдерных линий, доступ к которой осуществляется через API openGL ES 2.0 и управление ею, то вам следует установить для "версии развертывания" значение около 4.3, которое, как мне кажется, доступно только на таких устройствах, как 3GS или новее. xCode сообщает, что iOS 4.2.5 или выше необходима для запуска кода armv7. И еще раз, этот процессор, я полагаю, начал с 3GS.* IOS 4.3, кажется, выбор для меня, на данный момент.

http://theiphonewiki.com/wiki/index.php?title=Armv7

http://en.wikipedia.org/wiki/List_of_iOS_devices

Если xCode продолжает жаловаться на armv7, обязательно отключите любое подключенное устройство (особенно iPhone 5!!) и повторите попытку. Мне потребовались часы, чтобы узнать эту маленькую часть информации.

Довольно болезненная проблема для меня тоже. Просто потратил около часа, пытаясь построить и восстановить - без радости. В итоге мне пришлось сделать это:

  1. Обновите базовый SDK до последней версии (в моем случае iOS 5)
  2. Перезапустите xCode
  3. Очистить и построить
  4. Это сработало!

Я думаю, это кучка жаргона в отношении arm6, arm7, так как он выглядел так, как будто мой проект был действителен для обоих, по крайней мере, настройки, казалось, так и говорят), я думаю, это циничный способ обмануть нас техническими деталями, которые мы не понимаю, поэтому мы просто выбираем простой вариант и нацеливаемся на последнюю версию iOS (хорошо для Apple, когда все больше людей в курсе) ....

Используя Xcode 4.2 на Snow Leopard, я использовал следующие настройки для создания приложения, работающего как на armv6 (Iphone 3G и ниже), так и на armv7 (все новее, чем 3G, включая 3GS).

архитектура: armv6 и armv7 (удалено $(ARCHS_STANDARD_32_BIT))
строить только активную архитектуру: нет
требуемые возможности устройства: armv6

не включайте armv7 в требуемые возможности устройства, если вы хотите, чтобы приложение работало на 3G и ниже.

Заметка; Я должен был выполнить эти шаги как для моего базового проекта, так и для встроенного файла PhoneGap .xcodeproj в моем приложении.

Да, я вставляю PhoneGap; они часто обновляются, и у меня меньше двух месяцев, чтобы узнать, что функция устарела.

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