升级到Xcode 8后出现错误:“没有这个模块”和“目标覆盖了`EMBEDDED_CONTENT_CONTAINS_SWIFT`构建设置”。

69

在构建项目时,我遇到了No such module的问题。如果我删除需要这个Pod的代码,则会出现另一个Pod的'No such module'错误,这意味着每个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_SWIFT 设置为NOYES,但没有任何效果。 我还将以下代码添加到我的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

使用 CocoaPods 建议的 $(inherited) 标志。 - kye
5个回答

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. 点击调试右侧,选择“其他”,输入“$(inherited)”。
  4. 对“发布”执行相同的操作,并安装您的 Pod。

您可以按照下面的图片进行操作。


enter image description here


2
我尝试过这样做,但是仍然出现“没有这个模块”的错误。 - Nahouto
1
这个对我来说有效,用来修复pod的安装/更新问题。不过Xcode(8)随后发出警告要求更新设置并恢复更改。 - AWebster
10
我总是收到“No - $(inherited)” 的提示,我无法像截图中那样将其设置为“YES- $(inherited)”。 - Chlebta
1
这对我有用:pod install不再生成警告。我为我的两个目标设置(App和Tests)都执行了此操作。我没有为项目设置执行此操作。 - Verticon
3
@Chlebta,我也遇到了同样的问题,但是那是因为我将$(inherited)设置在Project部分而不是Targets部分(就像在项目和目标列表中的快照中所示)。此外,由于没有设置正确的ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES变量,CocoaPods仍然会给我警告。 - uɥƃnɐʌuop
显示剩余4条评论

21

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


解决pod install错误:

这是因为您在构建设置中定义了一个标志,它会覆盖CocoaPods设置的标志。无论您将其设置为 YES 还是 NO,它都将覆盖CocoaPods的设置。

解决方法:

  1. 进入 项目/Targets -> [项目名称] -> 构建设置。
  2. 找到并点击相关设置(您可以使用右上角的搜索框)。
  3. 按下 Backspace 键删除该设置。

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

对于每个给您带来错误的标志都要重复此步骤,然后重新运行pod install以验证是否成功。


No such module错误的原因:

这种错误可能有多种原因。您是否查看过这些答案,看看是否适用于您的情况?如果您反馈了这些信息,那么就更容易帮助您。

  1. Xcode:“No such module”错误,但框架已经存在
  2. Xcode 7 beta 2:“no such module”

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

始终嵌入Swift标准库不再应该是粗体,当执行pod更新或pod安装时,您将不再收到此警告 =)


1
谢谢,它有效了,但不会影响其他功能,对吧? - Ariven Nadar
@ArivenNadar,不,据我所知没有这样的事情。 - BennyTheNerd
1
07/10/2017,这个解决方案在一个混合的Swift/Obj C项目/Pods中对我起作用了。 - user7219266
1
{btsdaf} - user805981

3
这是对我有效的方法:
pod deintegrate || rm -rf Pods
pod install --verbose
rm -rf ~/Library/Developer/Xcode/DerivedData

然后我只需要清理我的项目并重新构建。

有点像“散弹枪式”的方法,但是,是的,重新安装通常会有所帮助。 - Zayin Krige
它给我造成了很多警告 :( - Sébastien REMY
@iLandes,这是我所做的,也许你做了一些不同的事情来获取所有的警告。 - pableiros

-3

当我第二次在我的项目中导入SDWebImage时,它会提示找不到模块FLAnimatedImage,并且当我进行pod install时,它会警告"... ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES ... - 使用$(inherited)标志,或-从目标中删除构建设置。"最后,我找到了一种方法,彻底删除SD,特别是在finder中,在pods的产品中,删除模拟器中的项目,然后再次导入SD。


因此,修复它的步骤如下:1.移除SD卡(在Finder中) 2.删除模拟器中的项目 3.重新导入SD卡如果有类似情况,请尝试编辑并改进您的回答格式。欢迎来到SO。 - Juan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接