Що означає попередження “Зіставлення архітектури arm64 з x86_64”?


95

Після перенесення мого фреймворка на бета-версію Xcode 10 (10L176w) я почав отримувати такі попередження:

Зіставлення архітектури arm64 з x86_64. Переконайтеся, що параметри збірки Архітектури та Дійсні архітектури цієї цілі налаштовані правильно для платформи iOS Simulator.

... і:

Зіставлення архітектури armv7 з i386. Переконайтесь, що параметри збірки Архітектури та Дійсні архітектури цієї цілі налаштовані правильно для платформи iOS Simulator.

Незважаючи на ці попередження, складання та модульні тести проходять нормально. Я використовую Swift 4.2.

І все-таки, про що ці попередження?


Я бачу це при налаштуванні при спробі побудувати 64-бітну лише за допомогою ARCHS = $(ARCHS_STANDARD_64_BIT)іVALID_ARCHS = $(inherited) x86_64 i386
Kdawgwilk

Відповіді:


101

Перейдіть у Налаштування збірки і зробіть, як показано нижче

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


5
Підтверджую, це спрацювало для мене - не знаю чому, але ці налаштування були виділені жирним шрифтом як у налаштуваннях проекту, так і в цільовій збірці. Потім я видалив, як було згадано вище (в обох місцях!), І це просто видалило жирне виділення (повернуто до стандартних, очевидно), і попередження зникли
Нік Ентін,

23
Тільки для уточнення, це потрібно робити як щодо проекту, так і для цілі.
palmi

2
Приємна відповідь, я пропоную, щоб це було рішенням.
Хайдер Саті,

8
Коли я видалив його, нічого не відображається в Resolved, і я отримуюThere are no valid architectures to compile for because the VALID_ARCHS build setting is an empty list
Crystal

2
здається, більше не працює. Я отримую ту саму проблему, про яку Crystal повідомляє з Xcode 11 beta 6. Натомість для мене працює відповідь Джона
Фабіан Стрейтель

70

Я зміг замовкнути ці попередження, змінивши параметр Дійсні архітектури,$(ARCHS_STANDARD) який також відповідає моєму налаштуванню Архітектура .

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


2
Цей параметр працював для мене для "універсального" фреймворку, орієнтованого як на iOS, так і на macOS.
Джон

1
Це було моє рішення. Я встановив дійсну архітектуру: $ (ARCHS_STANDARD) у Project і в Targets. Дякую.
CGN

2
@CGN, як ти встановив проект? Я успішно встановив цілі.
Ерум,

@Erum: див. 2 ​​скріншоти нижче
CGN

27

Ймовірно, у вас замінено налаштування збірки VALID_ARCHS ("Дійсні архітектури") або для цілі, або для її проекту. Це параметр збірки, який повинен отримувати своє значення автоматично залежно від того, для якого пункту запуску ви будуєте. Коли ви з’ясуєте, звідки береться це перевизначення (параметр збірки відображатиметься жирним шрифтом при перевизначенні), виберіть його та натисніть клавішу видалення, щоб відновити його до значення за замовчуванням.


2
Я також бачу цю помилку. Я не перевизначив налаштування VALID_ARCHS. Він містить arm64як для налагодження, так і для випуску.
funkenstrahlen

10
Здається, це помилка в Xcode 10. Все ще трапляється із налаштуваннями за замовчуванням
Kdawgwilk,

5
Це, але, здається, з'являється у випускній версії Xcode 10. Хто-небудь мав оновлення щодо цього?
plivesey

1
me2, я просто гуглив про це, але безрезультатно
MegaManX

2
Мені потрібно було перейти до всіх своїх підпроектів та цілей та видалити, VALID_ARCHSщоб встановити його за замовчуванням, а потім знову очистити та закрити / відкрити Xcode, щоб він повністю працював для мене
manman

16

Для ЦІЛІ, яка повідомляє про попередження, змініть параметр "Дійсна архітектура" на:

$(VALID_ARCHS)
x86_64

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


Найкраща відповідь точно!
Supertecnoboff

8

Подібно до інших відповідей, я зміг видалити попередження, змінивши $(VALID_ARCHS)(Дійсні архітектури) на $(ARCHS_STANDARD). Звідти я очистив усі похідні дані та перезапустив Xcode 10.0. Це змусило попередження повністю зникнути. Видаливши все з дійсних архітектур, щойно з’явилося інше попередження („Не знайдено дійсних архітектур“).


1

Рішення простіше: у Valid Architectures просто замініть arm64 на x86_64 .

У моєму проекті була подібна проблема та такі три попередження: Була подібна проблема та таке попередження у моєму проекті

Мої дійсні архітектури спочатку були Мої ** дійсні архітектури ** спочатку були

Заміна:

  • armv7 з i386,
  • armv7s з i386,
  • та arm64 з x86_64

(як згадано у Попередженнях) було моїм рішенням. Результатом налаштування Дійсна архітектура було:

Заміна armv7 на i386, armv7s на i386 та arm64 на x86_64, як згадувалося в Попередженнях, було моїм рішенням

Після заміни мої три попередження вище зникли.

Більш детальну інформацію про архітектури можна знайти тут: https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/

Я думаю, що формулювання цього попередження у Xcode викликає певну плутанину.


1

Якщо ви стикаєтесь із проблемою у Flutter:

  1. Видаліть файл Podfile, Podfile.lock, папку Pods, Runner.xcworkspace, Flutter.framework.

  2. Біжи flutter clean.

  3. Біжи flutter build ios.

0

Я бачив це попередження, коли намагався скомпілювати код як для iOS, так і для Mac OS. Я зміг обійти це, спочатку зробивши те, що запропонував Хасан Талеб у своїй відповіді: очистити архітектури, щоб там були лише діючі архітектури iPhone. І нарешті, щоб зберегти можливість збирання для Mac OS, проведіть курсором миші над дійсними архітектурами, щоб з’явилася кнопка плюса. Клацніть на це, і тоді ви зможете додати окремі налаштування для різних платформ, якщо потрібно, включаючи різні архітектури ЦП. Для macOS SDK я можу встановити для своїх дійсних архітектур лише x86_64, якщо хочу.Для macOS SDK я можу встановити для своїх дійсних архітектур лише x86_64, якщо хочу


на поточному Xcode ця опція більше не існує.
JBarros35,

@lambdapool, якого варіанту ви не бачите? Це "Дійсні архітектури" / "VALID_ARCHS"?
joelliusp

0

Я знайшов найпростіший спосіб вирішити це - відкрити проект у своєму текстовому редакторі, потім знайти та видалити всі VALID_ARCHSрядки.


0

Я теж стикаюся з тією ж проблемою. Для вирішення проблеми я щойно змінив систему збірки з Стандартної на Спадкову, і це вирішило проблему.


0

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

Real devices-> arm64 
Simulator devices ->x86-64

-2

якщо вашим [Налаштування збірки] є armv7 armv7s arm64, будь ласка, видаліть armv7s. попередження буде скасовано.


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