Что означает предупреждение «Сопоставление архитектуры 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
версию

Ответы:


101

Перейдите в настройки сборки и сделайте, как показано ниже.

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


5
Подтверждаю, у меня это сработало - я не знаю почему, но эти настройки были выделены жирным шрифтом как в настройках проекта, так и в настройках целевой сборки. Затем я удалил, как упомянуто выше (в обоих местах!), И это просто удалил жирное выделение (очевидно, что вернулись к значениям по умолчанию), и предупреждения исчезли
Ник Энтин

23
Чтобы уточнить, это необходимо сделать как для проекта, так и для цели.
palmi

2
Хороший ответ, я предлагаю, чтобы это было решением.
Heider Sati

8
Когда я удалил его, в разделе «Решенные» ничего не отображается, и я получаюThere are no valid architectures to compile for because the VALID_ARCHS build setting is an empty list
Crystal

2
похоже, больше не работает. У меня та же проблема, о которой сообщает Кристалл с Xcode 11 beta 6. Вместо этого у меня работает ответ
@John

70

Я был в состоянии заглушить эти предупреждения, изменяя мои Правильные Architectures установки на $(ARCHS_STANDARD)который соответствует моему Architectures настройки , а также.

Как ни странно, это отображается как armv7 arm64(по сравнению с настройкой по умолчанию armv7 armv7s arm64), но установка этого значения вручную по-прежнему вызывает предупреждения. Не уверен, каково это значение, но я еще не заметил никаких проблем в своем тестировании.


2
Этот параметр работал у меня для «универсальной» платформы, ориентированной как на iOS, так и на macOS.
Джон

1
Это было моим решением. Я установил допустимые архитектуры: $ (ARCHS_STANDARD) в Project и Targets. Спасибо.
CGN

2
@CGN, как вы установили в Project? Я успешно установил цели.
Erum

@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, чтобы он полностью работал для меня
манман

16

Для TARGET, который сообщает о предупреждениях, измените параметр «Действительная архитектура» на:

$(VALID_ARCHS)
x86_64

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


Лучший ответ наверняка!
Supertecnoboff

8

Как и в других ответах, мне удалось удалить предупреждение, изменив $(VALID_ARCHS)(Действительные архитектуры) на $(ARCHS_STANDARD). Оттуда я очистил все производные данные и перезапустил Xcode 10.0. Это заставило предупреждение полностью исчезнуть. При удалении всего из Valid Architectures просто появилось другое предупреждение («Действительные архитектуры не найдены»).


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, это общая проблема , и ваше предложение не прогнозное
амок
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.