Ошибка сборки - отсутствует необходимая архитектура i386 в файле - PullRequest
103 голосов
/ 21 сентября 2009

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

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

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

Ответы [ 15 ]

131 голосов
/ 16 октября 2010

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

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

После этого проект будет работать нормально.

85 голосов
/ 24 сентября 2009

У меня была такая же проблема, и решение оказалось простым решением. Сделайте резервную копию, затем откройте файл 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.

43 голосов
/ 23 сентября 2009

То, что здесь произошло, заключается в том, что Xcode таинственным образом добавил запись «Пути поиска платформы», которая указывает на конкретный SDK устройства iPhone.Например, у меня недавно было установлено:

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

Это приводит компилятор к поиску фреймворков с неверной архитектурой.Удаление любых значений под ключом «Framework Search Paths» в настройках сборки вашей цели решит проблему.

10 голосов
/ 13 октября 2009

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

Ура!

Джесси

8 голосов
/ 10 декабря 2013

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

8 голосов
/ 29 марта 2010

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

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

5 голосов
/ 03 января 2013

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

5 голосов
/ 22 сентября 2009

Хотя возможно, что что-то было удалено, у меня был опыт, что что-то напортачило в файле проекта. Мне еще предстоит выяснить, что это за «что-то». У меня были похожие проблемы, когда установка 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». Добавьте или измените пути соответствующим образом и сохраните файл.

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

4 голосов
/ 16 июня 2012

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

4 голосов
/ 09 апреля 2010

«Редактировать настройки проекта» и найти «Пути поиска». Есть поле для «Рамки поиска платформы». удалить все !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...