Ошибки после обновления до Xcode 8: "Нет такого модуля" и "target переопределяет параметр" EMBEDDED_CONTENT_CONTAINS_SWIFT`build "

Я получаю No such module для Pods, когда я пытаюсь построить проект. Если я удалю код, ожидающий этого Pod, другой "Нет такого модуля" подходит для другого Pod, что означает, что каждый Pod должен быть затронут. Когда я набираю pod install, я получаю следующие сообщения:

[!] The X target overrides the `EMBEDDED_CONTENT_CONTAINS_SWIFT` build setting defined in `X’. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.

[!] The `X` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `X'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.

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

Я установил Always Embed Swift Standard Libraries и EMBEDDED_CONTENT_CONTAINS_SWIFT в NO и YES как в моих настройках сборки, так и ничего не сделал. Я также добавил следующий код в свой подфайл, и он тоже не работал:

post_install do |installer|
installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
        config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'NO'
    end
end
end

Ответ 1

[!] The `X` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `X'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.

Сегодня я столкнулся с этой проблемой. Я решил его

  • Перейдите в Project/Targets → [Project Name] → Настройки сборки.
  • поиск "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES"
  • щелкните правой кнопкой Отладка и выберите "Другое", введите "$ (унаследованный)"
  • сделать то же самое с "Release" и установить ваш pod

Вы можете следить за изображением ниже.


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

Ответ 2

Ошибки, которые вы видите при запуске pod install, не должны вызывать ошибки No such module. Поэтому я предполагаю, что эти ошибки не связаны.


Чтобы избавиться от ошибок pod install:

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

Чтобы исправить это:

  • Перейдите в Project/Targets → [Project Name] → Настройки сборки.
  • Найдите и нажмите соответствующую настройку (вы можете использовать окно поиска в правом верхнем углу).
  • Нажмите Backspace, чтобы удалить настройку.

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

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


Причины ошибок No such module:

Существует несколько способов возникновения этой ошибки. Просматривали ли вы эти ответы, чтобы узнать, применимо ли ваше дело к вашему делу? Если вы сообщите об этом, вам будет легче помочь.

Ответ 3

(Обновлено по состоянию на 10 октября 2017 года)

  • Проекты/Цели → Название проекта → Настройки сборки
  • Параметры сборки
  • Нажмите "Всегда встраивать стандартные библиотеки Swift", чтобы он был выделен.
  • Нажмите кнопку удаления на клавиатуре.

Библиотеки Always Embed Swift Standard больше не должны быть Жирным шрифтом, и вы больше не будете получать это предупреждение при выполнении обновлений модуля или установки pod =)

Ответ 4

Вот что я работал у меня:

pod deintegrate || rm -rf Pods
pod install --verbose
rm -rf ~/Library/Developer/Xcode/DerivedData

Затем я просто очищаю проект и строю его снова.

Ответ 5

когда я импортирую SDWebImage в свой проект во второй раз, он носил этот модуль FLAnimatedImage не найден, и когда я устанавливаю пакет, он предупреждает "... ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES... - используйте флаг $(inherited), или - удалите сборку настройки от цели". Наконец, я нахожу способ, который полностью удаляет SD, особенно в finder, в продуктах pods и удаляет проект в симуляторе, а затем снова импортирует SD.