Swift. Не удалось построить модуль objective-c "Аламофайр"

117

Свежая ванильная установка подмодуля Alamofire с использованием XCode6 и следуя указаниям к T. Что-то здесь просто не подходит. Я получаю сообщение об ошибке: «Не удалось создать модуль objective-c« alamofire »при импорте alamofire. Вот снимок экрана с полученной ошибкой:

введите описание изображения здесь И моя конфигурация:

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

stopshinal
источник
stackoverflow.com/questions/26503389/…
Саураб Праджапати
я думаю , что вы должны установить alamofire в соответствии с инструкцией приведенной здесь github.com/Alamofire/Alamofire
Саурабх Праджапати
ты заставил его работать? это сработало для меня, и после еще одного «Построить и запустить» он остановился, и я получил то же сообщение об ошибке ... :(
Георг
2
У коллеги было такое же сообщение об ошибке, но оказалось, что причина в том, что он все еще использовал Xcode 6.1 (когда я пишу это, мы живем в эпоху 6.3). Сказать это для протокола, если кто-то еще борется с тем же самым.
villapossu 02

Ответы:

103

Когда это произойдет, просто сначала создайте фреймворки отдельно. В твоем случае:

  • Меняем схему на Аламофайр
  • Сборка ( ⌘B )
  • Вернитесь к своей схеме
  • Бегать
Даниэль Ларссон
источник
3
Отличный ответ; Я не обращал внимания на изменение схемы сборки, чтобы исправить подобные ошибки!
техпрофессор
1
Спасибо за помощь.
Тидан
5
Если вам нужно построить схему отдельно, это, вероятно, означает, что у вас нет правильной настройки фреймворка в качестве целевой зависимости в настройках сборки вашего приложения. Сделайте это, и вам не придется создавать его вручную.
Чарльз А.
Я проголосовал за это, поскольку он работает в Xcode. К сожалению, это не сработает при сборке из командной строки или при сборке для Release.
Энеко Алонсо
Это устранило проблему, с которой я столкнулся с GoogleApiClient / Drive. Сборка завершится успешно, но как только в файл будут внесены какие-либо изменения, Xcode пожалуется на импорт.
Ник Александр
53

Перейдите в Developer / Xcode / DerivedData и удалите папку для вашего фреймворка. (Или просто удалите сам DerivedData)

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

Затем очистить и построить

Шон Хауэлл
источник
Это сработало и для меня, но затем я столкнулся с несколькими командами, эта ссылка поможет: stackoverflow.com/questions/50718018/… .
Bhimbim
32

У меня это всегда работает:

  1. Выйти из Xcode
  2. Удалить ~/Library/Developer/Xcode/DerivedData
  3. Измените схему вашего фреймворка и соберите ⌘B
  4. Измените схему вашего приложения и создайте ⌘B
Сэм Соффс
источник
22

Удаление папки DerivedData, очистка и сборка проекта решили для меня эту проблему.

Isuru
источник
15

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

  1. Cmd+ B- Создает рабочую область и, возможно, должен построить желаемую цель или модуль.

  2. Cmd+ Kа затем Cmd+ B- Очистить, а затем построить

  3. Cmd+ Shift+ Option+ Kи Cmd+ B- Очистить папку сборки

  4. Закройте Xcode, удалите производные данные, запустите Xcode и Cmd+ Shift+ Option+, Kзатем Cmd+B

Это самый чистый способ очистки производных данных и других кешей от Xcode.

ravisekahrp
источник
Для тех , кто использует ICloud синхронизации (например, имея проект в папку Документы , так что это будет легко синхронизировать с множественным Мака), проверка файла с именем: XXX 2.swift. Найдите и удалите их все, затем запустите pod install.
Джон Панг
12

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

Project > "Target" > Build Phases > Target Dependencies

Дэвид Джеймс
источник
Кроме того, если вы работаете с другой платформой, разработанной в той же рабочей области, не забудьте добавить проект в качестве связанной библиотеки вместо файла платформы, иначе платформа не будет отображаться как целевая зависимость.
Давид Пастор
11

У меня сработала чистая сборка.

  1. Строй чистый для Аламо
  2. Чистая сборка для HTTPDemo
Ник Митчелл
источник
6

Закомментируйте импорт и весь код, который его использует, соберите, запустите, а затем раскомментируйте. У меня это сработало ...

xytor
источник
1

Я решил эту проблему в одном из моих гибридных проектов Objective-C / Swift.

В вашем файле моста Objective-C добавьте следующую строку:

#import <Alamofire/Alamofire.h>

Эдди Лау
источник
0

Любой модуль, который не удалось собрать, также может вызвать эту ошибку. (в моем случае не удалось построить старый модуль с устаревшим синтаксисом).

Вы можете попробовать pod updateобновить свои поды до последней версии и посмотреть, как все пойдет.

Банда клык
источник
Для тех , кто использует ICloud синхронизации (например, имея проект в папку Документы , так что это будет легко синхронизировать с множественным Мака), проверка файла с именем: XXX 2.swift. Найдите и удалите их все, затем запустите pod install.
Джон Панг
0

Безумное решение этой проблемы - единственное рабочее решение для меня

Создайте новую схему и добавьте платформу, которая показывает ошибку. В данном случае «Аламофайр». Запустите все эти схемы.

Как только вы скомпилируете все схемы, ваша цель проекта также будет работать нормально.

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

Saranjith
источник
0

Если допустимые архитектуры проекта Alamofire не содержат допустимые архитектуры вашего проекта, возникает ошибка «Не удалось построить модуль objective-c ..».

Добавьте эти архитектуры i386 x86_64 arm64 arm64e armv7 armv7s armv6 armv64 в « Допустимые архитектуры » проекта Alamofire в « Настройках сборки ».

Создайте одно и то же целевое устройство для обоих проектов. Например, сначала создайте проект Alamofire для iPhone 8 (13.2), а затем создайте свой проект для того же симулятора.

Если сборка проекта Alamofire занимает очень короткое время, то есть около 0,5 секунды, это означает, что в проекте Alamofire возникает ошибка, потому что архитектура выбранного симулятора не соответствует действительным архитектурам .

Юсуф Демирчи
источник