После обновления до Xcode 5.1 я больше не могу собрать свой проект для 64-битного симулятора, получив такую ошибку:
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
Это мои настройки сборки цели:
Я попытался изменить «Build Active Architecture» на «No», а также добавить «i386» в «Valid Architecture», но, к сожалению, ничего не получилось. Спасибо за любые предложения!
Ответы:
У меня было то же сообщение об ошибке после обновления до XCode 5.1. Вы используете CocoaPods? Если так, это должно решить проблему:
источник
Что вам нужно сделать , это просто установить ,
ONLY_ACTIVE_ARCH
чтобыNO
(по крайней мере у меня работает). Ниже приведен скриншот для этого:РЕДАКТИРОВАТЬ:
Насколько я знаю ( пожалуйста , укажите это, если есть что - то не так, спасибо ), если вы установите
ONLY_ACTIVE_ARCH
наYES
, это означает , что Xcode будет строить только для активной архитектуры (которая относится к устройству , которое входит в Xcode в настоящее время). Кажется, для Xcode по умолчанию установлено значение DebugYES
, поэтому он не будет создавать двоичные файлы для других архитектур, если вы хотите создавать только для специального устройства, подключенного к вашему Mac.Причиной неудачной сборки может быть то, что проект не поддерживает архитектуру подключенного устройства. Поэтому лучшее решение - добавить правильную архитектуру для вашего устройства. Ниже приведен список архитектур и устройств, которые поддерживают:
iPhone 6
,iPhone 5s
,iPad Air
,Retina iPad Mini
iPhone 5
,iPhone 5c
,iPad 4
iPhone 3GS
,iPhone 4
,iPhone 4S
,iPod 3G/4G/5G
,iPad
,iPad 2
,iPad 3
,iPad Mini
iPhone
,iPhone 3G
,iPod 1G/2G
Так почему «установить
ONLY_ACTIVE_ARCH
вNO
» работает? Поскольку устройство все еще может запускать двоичный файл, созданный для всех архитектур, которые вы добавили (пропустите сборку), но он потеряет некоторую производительность. Это просто быстрое решение, но не лучшее.Примечание . Чем больше архитектур вы добавили, тем больше будет создан двоичный файл. Поэтому хорошо выбрать правильную архитектуру для вашего проекта. ;)
источник
Добавьте
arm64
к целиvalid architectures
. Похоже, это добавляетx86-64
архитектуру к действующим архитектурам симулятора.источник
Если вы используете CocoaPods, наиболее вероятная проблема заключается в том, что в вашем проекте «Настройки сборки» для « Только активная архитектура» для «Отладка» установлено значение « Да» .
Решение простое. Измените это на Нет .
Аналогичным образом, измените на Нет для вашего проекта приложения.
источник
У меня была похожая проблема. Получил решение путем изменения «Архитектура» на « $ (ARCHS_STANDARD_32_BIT) » в настройках сборки для проекта.
Теперь вам нужно выбрать Стандартные архитектуры (armv7, arm64) - $ (ARCHS_STANDARD), так как Apple рекомендует приложения для сборки на 64-битной архитектуре. Нажмите: Apple, документ
источник
$(ARCHS_STANDARD_INCLUDING_64_BIT)
?$(ARCHS_STANDARD_32_BIT)
или$(ARCHS_STANDARD_INCLUDING_64_BIT)
?Добавить: Архитектура: $ (ARCHS_STANDARD_INCLUDING_64_BIT)
Допустимые архитектуры: arm64 armv7 armv7s
источник
На всякий случай, для тех, кто все еще сталкивается с проблемой, несмотря на то, что следуют вышеупомянутому, проверьте, что симулятор, который вы используете, также является поддерживаемым. Я указал мой на arm7 и arm7s, но пытался запустить приложение на 64-битном симуляторе.
источник
Чтобы избежать "pod install" сбрасывать only_active_arch для отладки при каждом запуске, вы можете добавить следующее в ваш файл pod
источник
Просто добавьте arm64 в правильную архитектуру. Я надеюсь, что это будет работать для вас.
источник
Моя проблема заключалась в том, что проект Pods был ориентирован на OS X, несмотря на мой Podfile
platform :ios
. Я использую cocoapods 0.35.0.rc2.Чтобы исправить это, выберите проект Pods в навигаторе проекта и убедитесь, что узел Pods PROJECT (имейте в виду, а не цель Pods) ориентирован на iOS. То есть настройки сборки архитектуры должны быть:
$(ARCHS_STANDARD)
iOS 8.1
iOS
$(ARCHS_STANDARD)
Я также хотел собрать все архитектуры, поэтому добавил в Podfile следующее:
источник
Я должен был добавить следующее
i386
иx86_64
кValid Architectures
. Я использую Xcode 7.2 и ориентирован на iOS 8+. У меня уже былоarmv7
,armv7s
иarm64
там, и это работало в Xcode 6.4.источник
Я столкнулся с той же проблемой при запуске моего приложения на iPad с использованием xcode 5.1. Эта проблема была решена путем удаления armv7s из «допустимых архитектур» и установки значения «только для активных архитектур» в значение «Нет». Оба этих поля можно найти в вашем приложении-> target-> build settings-> architectures.
источник
Я пришел к этому вопросу из-за проблемы со сборкой командной строки для симулятора в Xcode 7.2. В случае, если кто-то еще попадет сюда с той же проблемой, я поделюсь найденным решением:
Очевидно, есть ошибка в Xcode 7.2, которая приводит
xcodebuild
к сбою при попытке построить для симулятора. Решение состоит в том, чтобы указать опцию «-destination», например:Обновить
Приведенный выше пример команды создаст двоичный файл, включающий графику только для iPhone 6. Если двоичный файл запускается на других симуляторах, графика iPhone 6 масштабируется до платформы. Лучше обходной путь , который содержит все графики для всех платформ , чтобы указать параметр
PLATFORM_NAME=iphonesimulator
, например:источник
Попробуйте удалить все предыдущие архитектуры (то есть удалить параметр ARCHS_STANDARD) одновременно с добавлением i386 в Архитектуры. Это должно изменить активную архитектуру на i386. Я столкнулся с подобной проблемой, когда пытался собрать для armv7 по умолчанию, но он продолжал пытаться собрать для arm64. Я изменил ARCHS_STANDARD на ARCHS_STANDARD_32_BIT, и это изменило выбранную активную архитектуру.
источник
В акриектуре - иногда для поддержки 6.0 и 7.0 мы исключаем arm64
В архитектурах -> acrchitecture - выберите стандартную архитектуру arm64 armv7 armv7s. Чуть ниже в Valid acrchitecture сделать пользователя arm64 armv7 armv7s включен. Это сработало для меня.
источник
Я решил эту проблему, используя ответ @ Kjuly и конкретную строку:
«Причиной неудачной сборки может быть то, что проект не поддерживает архитектуру подключенного устройства».
С загруженным XCode это автоматически устанавливает мое приложение для iPad на iPad Air
Это вызвало ошибку анализа зависимости.
Изменение типа устройства сразу решило проблему:
Я не знаю, почему это работает, но это очень быстрый ответ, который избавил меня от необходимости много возиться в фоновом режиме и мгновенно заставил приложение работать для тестирования. Я бы никогда не подумал, что это может быть что-то, и что-то настолько простое исправит это, но в этом случае это произошло.
источник
Я обнаружил, что необходимо было вводить имена архитектур вручную:
Я не знаю, почему это было необходимо, то есть, почему эти значения не были унаследованы от самого Xcode. Но как только я это сделал, проблема ушла.
источник
В действительных архитектурах: выберите каждую запись (выпуск, отладка), соберите и нажмите клавишу Backspace. Он должен работать
источник