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


332

Минув час, коли мені довелося коригувати настройки збірки проектів. Після оновлення до недавнього SDK у мене виникли проблеми зі створенням моєї конфігурації ad hoc.

Збірка генерує це попередження та помилку:

попередження: програми iPhone повинні містити архітектуру armv6 (поточний ARCHS = "armv7")

iPhone / iPod Touch: у виконанні програми відсутня необхідна архітектура. Принаймні одна з таких архітектур (и) повинна бути присутнім: armv6 (-19033)

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

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

alt текст

Я прибрав усі цілі.

Я ціную будь-які поради.


Моя була старою програмою, яка отримала оновлення, і вона кидає ту ж помилку і для 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. Дивно, що процес подання все ще вимагає збірки ARM6, хоча 4.2 зараз є загальнодоступним ...
Jasarien

7
У мене немає рядка розподілу під архітектурою, натомість у мене є рядок "Випуск". не знаю, як це зробити
OMGPOP

2
@ LetSpotIt Просто додайте armv6 та armv7 у рядок випуску. Проект з моїх скріншотів був імпортований з більш ранньої версії Xcode, звідси різні назви архітектури.
Нік

2
Дякую Ніку. Також для нових проектів, створених у Xcode 4.2, можливо, буде потрібно змінити файл info.plist для підтримки пристроїв armv6. Дивіться мою додаткову відповідь нижче.
MattyG

1
@Nick дякую за пораду, і для мене мені довелося вибрати "Project" замість "Target". вибравши налаштування збірки "Ціль" для мене не вийшло. все одно ще раз дякую за допомогу.
Prasad De Zoysa

62

Якщо ви зніміть прапорець "Зробити лише активну архітектуру", вона створить усі дійсні архітектури.

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


11
Ви можете пришвидшити час складання, встановивши "YES" для налагодження налагодження, а "No" на "Release".
Біллі Грей

59

У мене виникла ця проблема навіть після того, як я прийняв відповідь і виявив, що це працює:

У свій Info.plist додайте запис для необхідних можливостей пристрою. Це має бути масив і матиме два записи.

  • Пункт 0: armv6
  • Пункт 1: armv7

Це буде виглядати приблизно так:

Введення необхідних можливостей пристрою


Це рішення зафіксувало інші мої попередження щодо архітектури, але я все одно отримую початкове, і у мене також "Створення лише активної архітектури" встановлено на "Ні"
Dan F

виправили це для мене, оскільки попереднє рішення не застосовувалося. Чомусь armv6 більше не відображається в налаштуваннях архітектури побудови: S
seeafish

Це разом із відповіддю Ніка вище зафіксувало це для мене. +1
Saurabh Wadhwa

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

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

26

Окрім відповіді Ніка про Xcode 4.2, вам також може знадобитися переглянути файл info.plist. Схоже, що нові проекти, запущені в Xcode 4.2 за замовчуванням, вкажіть "armv7" у "Необхідні можливості пристрою". Видалити це потрібно, якщо ви хочете підтримувати пристрої, які працюють під управлінням armv6 (наприклад, iPhone 3G).

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

Видаліть armv7 із "Необхідні можливості пристрою" у своємуProjectName-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

для мене це не працює з кожною відповіддю. але я спробую ЦІЛИ> Архітектури> Налагодження та додаю новий рядок за допомогою кнопки "плюс" та введіть "armv6" (з "), а потім натисніть Готово.

і, нарешті, CMD + B, а потім клацніть правою кнопкою миші на PrjectName.app (у папці Продукти)> Відкрити в Finder> Стиснути "PROJECT_NAME.APP" (у Debug-iphoneos)> Завантажити в AppStore

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

це моє налаштування екрана. введіть тут опис зображення

якщо у вас є проект, будь ласка, налаштуйте його все. Сподіваюсь на вашу допомогу.


1
До того ж мені довелося встановити armv6 на архітектуру випусків, перш ніж вона запрацює.
/ ч

3

Спробувавши суміш цих відповідей, я нарешті наткнувся на те, щоб він працював. Я так злий на Apple зараз. Ще одну годину вони змусили мене марнувати. Ось моя конфігурація.

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


2

Я спробував усі відповіді вище, жодна не вирішила мого питання. Тому я створюю новий проект і відрізняю налаштування збірки по одному. Тільки "Альтернативні файли дозволів" відрізняються. Помилка побудови проекту має значення armv7. Видаліть його, потім очистіть-> build-> архів. Досягати успіху! Надія може вирішити ваше питання


2

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

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

Дякую за повідомлення! Я провів деякий час, оновлюючи всі параметри проекту до armv6, armv7, але ніякої радості. Коли я встановив "лише побудувати активну архітектуру" на "Ні", у мене з'явилася помилка збирання щодо розміщення обох об'єктів в одній директорії.

На щастя, я помітив, що замість цього ви, хлопці, змінювали налаштування цільової збірки. Це те, що нарешті спрацювало (armv6, armv7 та налаштування "побудувати лише активну архітектуру" на "Ні" в налаштуваннях цільової збірки). Як застереження я вже встановив усі архітектури armv6, armv7 в налаштуваннях проекту.

У будь-якому випадку, дякую за допомогу, Брент


2

Мені потрібно було впевнено змінити ці налаштування і в налаштуваннях Цілі, і в проекті на 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. Встановіть Build Active Architecture тільки на 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) Ви можете встановити це на вкладці «Налаштування збірки» або на вкладці «Підсумок». Почніть з верхнього лівого краю вікна в Навігаторі проектів із усіма переліченими в ньому файлами. Клацніть на верхньому, який має синій значок.

(ii) Якщо ви плануєте використовувати програмовану схему шейдерних ліній, до якої можна отримати доступ та керувати через OpenGL ES 2.0 API, то слід встановити "Версію розгортання" приблизно на 4.3, що, на мою думку, доступне лише на таких пристроях, як 3GS або новіші. xCode повідомляє, що для запуску коду armv7 потрібен iOS 4.2.5 або новішої версії. І я знову вважаю, що цей процесор, я вважаю, почав з 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 AND armv7 відповідно до необхідних можливостей пристрою, але як тільки я поставив armv7, додаток не завантажуватиметься та не працюватиме на
iphone3g

Залишивши запис armv7 у "Необхідні можливості пристрою", Xcode заборонив мені працювати на iPhone 3G.
tinsukE
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.