更新到Xcode 8后出现错误:“无此类模块”和“目标覆盖了`EMBEDDED_CONTENT_CONTAINS_SWIFT`构建设置”


69

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 LibrariesEMBEDDED_CONTENT_CONTAINS_SWIFTNO并且YES都没有执行任何操作。我还向Podfile中添加了以下代码,但该代码也不起作用:

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

$(inherited)按照CocoaPods的建议使用标志
-ye

Answers:


145
[!] 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.

我今天遇到了这个问题。我解决了

  1. 转到项目/目标-> [项目名称]->构建设置。
  2. 搜索“ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES”
  3. 单击“调试”的右侧,然后选择“其他”,输入“ $(继承)”
  4. 与“发布”相同并安装您的Pod

您可以按照下面的图像。


在此处输入图片说明


2
我尝试执行此操作,但仍然出现错误“无此模块”
Nahouto

1
这对我来说可以解决Pod的安装/更新。但是,Xcode(8)随后发出警告以更新设置并还原更改。
AWebster '16

10
我总是No - $(inherited) 无法将其设置为YES- $(inherited)屏幕截图中的样子
Chlebta

1
这对我有用:吊舱安装不再生成警告。我为两个目标设置都做到了;应用程序和测试。我没有为项目设置这样做。
Verticon

3
@Chlebta,这也发生在我身上,但这是因为我$(inherited)Project部分而不是在Targets部分下设置了(如“项目与目标”列表中的快照所示)。同样,由于未设置正确的ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES变量,可可足仍在给我警告。
uɥƃnɐʌuop

21

运行时看到的错误pod install不应导致这些No such module错误。所以我的猜测是这些错误是无关的。


要摆脱pod install错误:

发生这种情况是因为您在构建设置中定义了一个标志,该标志会覆盖CocoaPods设置的标志。不管将其设置为YES还是NO,它仍然会覆盖CocoaPods中的设置。

要解决此问题:

  1. 转到项目/目标-> [项目名称]->构建设置。
  2. 查找并单击相关设置(您可以使用右上角的搜索框)。
  3. Backspace删除设置。

您应该看到设置从粗体变为普通字体。这意味着该设置已被删除,而是使用默认值。

对每个标志重复一次,给您一个错误,然后重新运行pod install以验证它是否有效。


No such module错误原因:

有多种方法可以发生此错误。您是否查看了这些答案以查看是否适用于您的情况?如果您报告,那将更容易为您提供帮助。

  1. Xcode:“没有这样的模块”错误,但是框架在那里
  2. Xcode 7 beta 2上的“没有这样的模块”

5

(截至2018年7月29日更新)

  1. 项目/目标->项目名称->构建设置
  2. 构建选项
  3. 单击始终嵌入Swift标准库,使其突出显示
  4. 按键盘上的删除按钮

总是嵌入雨燕标准库不应该再大胆,并执行荚更新时,您将不再收到此警告或吊舱安装=)


1
感谢它的工作,但不会影响任何其他功能吧?
阿里芬·纳达尔

@ArivenNadar,不,不是我所知道的
BennyTheNerd

1
2017/07/10,此解决方案在Swift / Obj C Project / Pods混合环境中为我工作

1
我仍然会在2017年10月23日收到警告。...为了使此工作正常,您必须仔细检查所有目标,并确保它们都不大胆。这也包括测试。
user805981

3

这就是我为我工作的内容:

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

然后,我只是清理我的项目并重新构建它。


有点a弹枪的方法,但是,干净的安装通常会
有所

这使丢失警告我:(
塞巴斯蒂安REMY

@iLandes这对我有用,也许您正在做一些不同的事情来避免丢失所有警告
pableiros

-2

当我第二次在项目中导入SDWebImage时,它磨损了找不到模块FLAnimatedImage的状态,当我pod安装时,它警告“ ... ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES ...-使用该$(inherited)标志,或者-从目标中删除构建设置。” 最后,我找到了完全删除SD的方法,特别是在查找程序中,在Pod的产品中,然后在模拟器中删除项目,然后再次导入SD。


因此,修复它的步骤是:1-删除SD(在查找器中)2-删除模拟器中的项目3-再次导入SD如果是这样,下次尝试编辑并给您的格式更好回答。欢迎来到SO。
胡安
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.