Ошибка сборки - отсутствует требуемая архитектура i386 в файле

Я получаю эту ошибку при создании приложения для iPhone:

ld: предупреждение: в /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit, отсутствует требуемая архитектура i386 в файле

Это то же самое для всех фреймворков в моем приложении. Это очень странно, поскольку раньше этого не происходило.

Ответ 1

Это происходит, когда вы добавляете фреймворк в свой проект и непреднамеренно копируете фреймворк в каталог проекта.

Исправить это, чтобы проверить каталог проекта (где вы храните проект на диске) для любых файлов iphone SDK *.Framework и удалить их.

После этого проект будет построен отлично.

Ответ 2

У меня была такая же проблема, и решение оказалось простым решением. Затем создайте резервную копию проекта project.pbxproj(находящегося внутри пакета вашего проекта) в TextMate или TextEdit и найдите раздел под названием "/* Начало раздела XCBuildConfiguration */". Найдите ключ с именем FRAMEWORK_SEARCH_PATHS и удалите его и его содержимое (один раз для каждой конфигурации сборки, поэтому я удалил его в двух местах). Вот пример того, что я удалил:

FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library/Frameworks\"",);

Мой проект теперь создан как для iPhone, так и для iPhoneSimulator.

Ответ 3

Что здесь произошло, так это то, что Xcode загадочно добавила запись "Path Search Paths", которая указывает на конкретный SDK устройства iPhone. Например, мой недавно был настроен на:

$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk/System/Library/Frameworks

Это приводит к тому, что компилятор находит фреймворки неправильной архитектуры. Удаление любых значений в разделе "Пути поиска в базе данных" в настройках вашей целевой сборки позволит решить проблему.

Ответ 4

Я просто хотел упомянуть, что в XCode, если вы перейдете в "Редактировать настройки проекта", и найдите "Пути поиска". Имеется поле "Пути поиска в Framework". Обновление этого должно устранить проблему, не взломав файл проекта!

Ура!

Джесси

Ответ 5

Убедитесь, что вы не копировали фреймворк в свой проект при его добавлении. Если вы скопировали его, он не сможет найти исходные пути. Чтобы устранить эту проблему. Удалите структуру AVFoundation из своей папки фреймворков в своем проекте, а затем добавьте ее еще раз, но на этот раз убедитесь, что у вас нет отмеченной копии.

Это исправило это для меня!

Ответ 6

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

Ответ 7

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

Сначала добавьте все ваши файлы в новый проект. Кажется, что это обычно работает. Однако вид боли.

Во-вторых, вы можете щелкнуть правой кнопкой мыши проект в XCode/Get Info/Build/Library Search Paths. Добавьте новые пути, похожие на /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk/usr/lib. Добавьте соответствующие версии этой строки для каждой версии (2.2.1 и т.д.) И платформы (симулятор или iPhoneOS). Выполните аналогичное действие для путей поиска в базе данных, если ваша инфраструктура является вашей проблемой.

В-третьих, более эффективная работа, но более надежная, заключается в том, чтобы открыть project.pbxproj из MyProject.xcodeproj(Textmate подходит для этого). Найдите "/* Начало раздела XCBuildConfiguration */", затем "LIBRARY_SEARCH_PATHS" и "FRAMEWORK_SEARCH_PATHS". Добавьте или измените пути в зависимости от ситуации и сохраните файл.

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

Ответ 8

Если ваше приложение предназначено для запуска на устройстве, убедитесь, что вы не пытаетесь запустить его на симуляторе. Может показаться очевидным, но все равно проверьте.

Ответ 9

"Измените настройки проекта" и найдите "Пути поиска". Поле "Пути поиска в каркасе". удалить все!!

Ответ 10

Это просто случилось со мной. Благодаря отличному партнеру мы нашли ответ. Ваш Xcode может указывать на симулятор.. замените его на устройство IOS, а не.. после того, как он будет построен после...

Ответ 11

Запустите команду файл в каркасе от терминала:

file /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit

Вы должны получить сообщение, сообщающее вам, с какими архитектурами совместим бинарный файл UIKit. Если вы не видите "i386" в списке, то вам как-то удалось удалить версию UIKit i386, что будет означать, что вы не можете создать для симулятора. Чтобы исправить это, вам придется переустановить SDK.

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

Ответ 12

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

Ответ 13

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

Вы можете удалить все записи в этом разделе.

Ответ 14

Я просто испытал что-то немного другое, потому что я работаю над своей собственной библиотекой (WM_GSRecognizerLib), но ошибка такая же.

Что произошло: из-за некоторых обновлений путь, предназначенный для lib для включения (.a), был из папки "Debug-iphoneos" (где он сгенерирован). Компиляция для универсальных устройств iOS работала нормально, но не для симулятора, жалуясь на отсутствующую архитектуру i386.

То, что я сделал для этой проблемы, также включает двоичные файлы из папки "Debug-iphonesimulator".

Это может помочь в этом вопросе, потому что объяснение здесь: устройствам нужны двоичные файлы для arm64/armv7/armv7s, тогда как симулятор действительно нуждается в i386.

Ответ 15

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

Их в опции поиска я набрал путь поиска Framework и удалил все настройки, а затем нажал кнопку сборки, и это сработало для меня просто отлично,

Спасибо и с уважением