Ошибки после обновления до 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.