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


332

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

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

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

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

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

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

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

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

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


У меня было старое приложение, которое получило обновление, и оно выдает ту же ошибку и для iOS Deployment Target <4.3! Поэтому я решил удалить все ссылки на armv6 и установить для этого => 4.3. Это сработало.
Хенрик Эрландссон

И только сейчас я попробовал то же самое для другого старого приложения, которое было переработано, но оно не сработало ... Проблема XCode 5, кажется, она неправильно читает параметры сборки.
Хенрик Эрландссон

Ответы:


418

Если используется 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.


3
Да, похоже, Apple отходит от ARM6, так что это кажется необходимым шагом для Xcode 4.2. Странно, что процесс
отправки по-

7
У меня нет строки распределения под архитектурой, вместо этого у меня есть строка "Release". не знаю, как это сделать
OMGPOP

2
@ Let'sSpotIt Просто добавьте armv6 и armv7 в вашу строку Release. Проект на моих скриншотах был импортирован из более ранней версии XCode, отсюда и другие названия Архитектуры.
Ник

2
Спасибо Ник. Кроме того, новым проектам, созданным в Xcode 4.2, возможно, потребуется изменить их файл info.plist для поддержки устройств armv6. Смотрите мой дополнительный ответ ниже.
MattyG

1
@ Ник спасибо за совет, и мне пришлось выбрать «Проект» вместо «Цель». Выбор настроек сборки «Target» для меня не сработал. В любом случае, еще раз спасибо за помощь.
Прасад Де Зойса,

62

Если вы снимите флажок «Построить только активную архитектуру», он соберет все действующие архитектуры.

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


11
Вы можете сократить время сборки, установив YES для отладочных сборок и No on Release.
Билли Грэй,

59

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

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

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

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

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


Это решение исправило другие предупреждения о моей архитектуре, но я все еще получаю начальное, и у меня также есть «Build Active Architecture Only», установленный в «Нет»
Дан Ф

исправил это для меня, так как предыдущее решение не применимо. По какой-то причине armv6 больше не отображается в моих настройках архитектуры сборки: S
seeafish

Это, наряду с ответом Ника выше, исправило это для меня. +1
Саурабх Вадхва

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

Для сборки с XCode 4.5+ вам придется отказаться от armv6 от требуемых возможностей устройства.
Pulkit Goyal

26

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

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

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


21

Обновление 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.

6

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


3

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

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

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

это моя настройка экрана. введите описание изображения здесь

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


1
Кроме того, мне пришлось установить armv6 на Release Architecture, чтобы она работала.
миль / ч

3

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

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


2

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


2

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

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

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

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

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


2

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

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


0

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

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

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


0

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

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

Он говорит, что есть две вещи, которые вы должны понять правильно:

  1. Добавьте armv6в настройки сборки Архитектура
  2. Установить только активную архитектуру No.

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

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


0

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

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


0

Попробуйте изменить цель развертывания на что-то более высокое, чем процессор 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


0

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


0

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

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

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


1
это единственное, что сработало для меня. тестирование на iphone4, iphone3g, ipad1, ipad2. читал, что мне нужно было поставить armv6 и armv7 в требуемые возможности устройства, но как только я вставил armv7, приложение не загрузило / не запустилось на iphone3g
noromamai

Оставив запись armv7 в «Требуемые возможности устройства», Xcode запретил мне работать на iPhone 3G.
tinsukE
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.