Xcode 5.1 – Нет архитектур для компиляции для (ONLY_ACTIVE_ARCH = YES, active arch = x86_64, VALID_ARCHS = i386)

После обновления до Xcode 5.1 я больше не могу строить свой проект для 64-битного симулятора, получив эту ошибку:

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386). 

Это настройки моей целевой сборки:

Настройки целевой настройки Xcode

Я попытался изменить «Build Active Architecture» на No, а также добавить «i386» в «Valid Architecture», к сожалению, не работал. Спасибо за любые предложения!

18 Solutions collect form web for “Xcode 5.1 – Нет архитектур для компиляции для (ONLY_ACTIVE_ARCH = YES, active arch = x86_64, VALID_ARCHS = i386)”

После обновления до XCode 5.1 я получил такое же сообщение об ошибке. Вы используете CocoaPods? Если это так, это должно устранить проблему:

  1. Удалите проект «Pods» из рабочей области на левой панели Xcode и закройте Xcode.
  2. Запустите «pod install» из командной строки, чтобы воссоздать проект «Pods».
  3. Повторно откройте Xcode и убедитесь, что для «Build Active Architecture Only» установлено значение «Нет» в настройках сборки как проекта «Pods», так и вашего собственного проекта.
  4. Очистите и постройте.

Что вам нужно сделать, так это просто установить ONLY_ACTIVE_ARCH в NO (по крайней мере, работает для меня). Ниже приведен снимок экрана:


РЕДАКТИРОВАТЬ:

Насколько я знаю ( укажите, если что-то не так, спасибо ), если вы установите ONLY_ACTIVE_ARCH в YES , это означает, что Xcode будет только строить для активной архитектуры (которая относится к устройству, которое активно в Xcode в настоящее время). Похоже, что по умолчанию для Xcode установлено значение Отладка в YES , поэтому он не будет создавать двоичные файлы для других архитектур, если вы хотите создать только специальное устройство, подключенное к вашему Mac.

Причина, по которой не удалось построить, может заключаться в том, что проект не поддерживает архитектуру подключенного устройства. Поэтому лучшим решением является добавление правильной архитектуры для вашего устройства. Ниже приведен список архитектур и устройств, которые поддерживают:

  • ARMv8 / ARM64: iPhone 6 , iPhone 5s , iPad Air , Retina iPad Mini
  • ARMv7s: iPhone 5 , iPhone 5c , iPad 4
  • ARMv7: iPhone 3GS , iPhone 4 , iPhone 4S , iPod 3G/4G/5G , iPad , iPad 2 , iPad 3 , iPad Mini
  • ARMv6: iPhone , iPhone 3G , iPod 1G/2G

Итак, почему «установить ONLY_ACTIVE_ARCH в NO » работает? Поскольку устройство все еще может запускать двоичный файл, который был создан для всех добавленных вами архитектур (передайте сборку), но потеряет некоторую производительность. Это просто быстрое решение, но не самое лучшее.


Примечание . Чем больше добавленных вами архитектур добавляется, тем больше будет генерироваться двоичный файл. Поэтому хорошо выбрать правильные архитектуры для вашего проекта. 😉

Добавьте arm64 в valid architectures цели. Похоже, он добавляет архитектуру x86-64 для симулятора.

Если вы используете CocoaPods, наиболее вероятная проблема заключается в том, что для вашего проекта Pods Build Settings для Build Active Architecture Only установлено значение Yes для Debug.

Решение прост. Измените его на No.

Аналогичным образом измените значение « Нет» для вашего проекта приложения.

У меня была аналогичная проблема. Получив это решение, изменив «Архитектура» на « $ (ARCHS_STANDARD_32_BIT) » в «Параметры сборки для проекта».

Теперь вам нужно выбрать Стандартные архитектуры (armv7, arm64) – $ (ARCHS_STANDARD), так как Apple рекомендует создавать приложения на 64-битной архитектуре. Нажмите: документ Apple

Добавить: Архитектуры: $ (ARCHS_STANDARD_INCLUDING_64_BIT)

Допустимые архитектуры: arm64 armv7 armv7s

На всякий случай, для тех, кто все еще сталкивается с проблемой, несмотря на описанное выше, убедитесь, что работающий имитатор также поддерживается. У меня был указатель на arm7 и arm7s, но я пытался запустить приложение на 64-битном симуляторе.

Чтобы избежать установки «pod install» reset only_active_arch для отладки при каждом запуске, вы можете добавить следующее в свой файл pod

 # Append to your Podfile post_install do |installer_representation| installer_representation.project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO' end end end 

Просто добавьте arm64 в действительную архитектуру. Надеюсь, это сработает для вас.

Моя проблема заключалась в том, что проект Pods был нацелен на OS X, несмотря на то, что у моего подфайла была platform :ios . Я использую cocoapods 0.35.0.rc2.

Чтобы исправить это, выберите проект Pods в навигаторе проекта и убедитесь, что узел Pods PROJECT (обратите внимание, а не цель Pods) нацелен на iOS. То есть, настройки построения архитектур должны быть:

  • Архитектуры: $(ARCHS_STANDARD)
  • Базовый SDK: iOS 8.1
  • Поддерживаемые платформы: iOS
  • Допустимые архитектуры: $(ARCHS_STANDARD)

Я также хотел построить все архитектуры, поэтому добавил в подфайл следующее:

 post_install do | installer | installer.project.build_configurations.each do |config| config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO' end end 

Мне пришлось добавить следующие i386 и x86_64 в Valid Architectures . Я запускаю Xcode 7.2 и настраиваю iOS 8+. У меня уже были armv7 , armv7s и arm64 и это работало в Xcode 6.4.

Я пришел к этому вопросу из-за проблемы с построением командной строки для симулятора в Xcode 7.2. Если кто-то еще попадет сюда с той же проблемой, я поделюсь найденным мной решением:

По-видимому, в Xcode 7.2 есть ошибка, которая приводит к сбою xcodebuild при попытке создания для симулятора. Решение состоит в том, чтобы указать опцию «-destination», например:

 xcodebuild -project TestBuildCmd.xcodeproj -scheme TestBuildCmd -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6' build 

Обновить

Вышеприведенная команда примера создаст двоичный файл, включающий только графику для iPhone 6. Если двоичный файл запускается на других симуляторах, графика iPhone 6 масштабируется до платформы. Лучшим обходным PLATFORM_NAME=iphonesimulator , которое содержит всю графику для всех платформ, является указание параметра PLATFORM_NAME=iphonesimulator , например:

 xcodebuild -project TestBuildCmd.xcodeproj -scheme TestBuildCmd -sdk iphonesimulator -arch i386 PLATFORM_NAME=iphonesimulator build 

Я столкнулся с такой же проблемой при запуске моего приложения на iPad с помощью xcode 5.1. Он был устранен, удалив armv7 из «допустимых архитектур» и установив значение «строить только активные архитектуры». Оба эти поля можно найти в ваших конфигурациях app-> target-> build-> architecture.

Попробуйте удалить все предыдущие архитектуры (например, удалить настройку ARCHS_STANDARD) одновременно с добавлением i386 в Архитектуры. Это должно изменить активную архитектуру на i386. Я столкнулся с аналогичной проблемой, когда пытался создать для armv7 по умолчанию, но продолжал пытаться построить для arm64. Я изменил ARCHS_STANDARD на ARCHS_STANDARD_32_BIT, и это изменило выбранную активную архитектуру.

В acrhiecture – иногда для поддержки 6.0 и 7.0, мы исключаем arm64

В архитектуре -> acrchitecture – выберите стандартную архитектуру arm64 armv7 armv7s. Только ниже в Действительной acrchitecture включите пользователя arm64 armv7 armv7s. Это сработало для меня.

Я решил эту проблему, используя ответ @ Kjuly и конкретную строку:

«Причина, по которой не удалось построить, может заключаться в том, что проект не поддерживает архитектуру подключенного устройства».

При загрузке Xcode она автоматически устанавливает приложение iPad для iPad Air

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

Это вызвало ошибку анализа зависимостей.

Изменение типа устройства сразу же решило проблему:

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

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

Я обнаружил, что нужно вводить имена архитектуры вручную:

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

Я не знаю, почему это было необходимо, то есть почему эти значения не были унаследованы от самого Xcode. Но как только я это сделал, проблема исчезла.

В допустимых архитектурах: выберите каждую запись (отпустите, отлаживайте) и создайте и нажмите «назад». Он должен работать

  • Xcode 6 iOS 8 UIImage imageName из проблемы с пакетом
  • ios 6.0 Simulator в xcode 5.1
  • Продолжайте получать ошибки компоновщика на Xcode 5.1, несмотря на возврат только к 32-битным архитектурам
  • Нет архитектур для компиляции для (ARCHS = i386, VALID_ARCHS = arm64 armv7 armv7s)
  • Как обновить нашу статическую библиотечную архитектуру для поддержки arm64 Build?
  • Поиск метода Xcode 5.1 допускает только один символ?
  • Как запретить копирование / вставку / выбор popover в UITextView с помощью UIMenuController iOS5.1
  • NSInvalidUnarchiveOperationException: 'Не удалось создать экземпляр класса с именем _UITableViewCellSeparatorView
  • Архитектура Arm64 в xcode 5.1
  • xcode 5.1: проблемы с архитектурой libCordova.a
  • Продолжайте получать сообщения о предупреждении «Открыть эту страницу в YourAppName?» При попытке запустить приложение из сафари
  • Interesting Posts

    Проблема с NSLog с Swift 3

    Почему один аварийный журнал символизирует, а не другой?

    Представление приложения в магазине приложений дает предупреждение «Отсутствует поддержка 64-разрядных версий»

    Как использовать возможности iOS

    iOS – авария UIRefreshControl

    вертикальное выравнивание UINavigationItems

    CGContextStrokePath не работает при масштабировании и рисовании изображений

    Есть ли способ получить симулятор iOS 7 на Xcode 7

    Почему Ioc-контейнеры в Objective-C не являются популярным подходом?

    iPhone App – отклонение модального контроллера просмотра не отменяет его

    Tesasract ios SDK Ошибка открытия файла данных /tessdata/eng.traineddata

    AVAudioPlayer Воспроизведение аудио на музыку воспроизводится в звуковом окне телефонных звонков

    Попытка сохранить на plist, когда приложение завершается

    как получить контактное изображение и номер телефона в моем приложении с помощью Objective C

    iPhone iOS Amazon Scheme / URI не работает больше amzn: // версия 4.3.1 Deep Linking

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.