【问题标题】:Errors after updating to Xcode 8: "No such module" and "target overrides the `EMBEDDED_CONTENT_CONTAINS_SWIFT`build setting"更新到 Xcode 8 后的错误:“没有这样的模块”和“目标覆盖了 `EMBEDDED_CONTENT_CONTAINS_SWIFT`构建设置”
【发布时间】:2016-09-19 09:30:23
【问题描述】:

当我尝试构建项目时,我收到了用于 Pod 的 No such module。如果我删除期望这个 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_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) 标志

标签: ios swift xcode cocoapods xcode8


【解决方案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.

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

  1. 转到项目/目标 -> [项目名称] -> 构建设置。
  2. 搜索“ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES”
  3. 点击Debug右侧,选择'Other',输入“$(inherited)”
  4. 对“发布”执行相同操作并安装您的 pod

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


【讨论】:

  • 我尝试这样做,但仍然出现错误“没有这样的模块”
  • 这对我修复 pod 安装/更新很有用。然而 Xcode (8) 随后发出警告以更新设置并恢复更改。
  • 我总是得到No - $(inherited) 我不能像截图中那样将它设置为YES- $(inherited)
  • 这对我有用: pod install 不再生成警告。我为我的两个目标设置都这样做了;应用程序和测试。我不是为项目设置做的。
  • @Chlebta,这也发生在我身上,但这是因为我将 $(inherited) 设置在 Project 部分而不是 Targets 部分下(如快照所示项目和目标列表)。此外,由于没有设置正确的 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES 变量,cocoapods 仍然给我警告。
【解决方案2】:

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


摆脱pod install 错误:

这是因为您在构建设置中定义了一个标志,该标志覆盖了 CocoaPods 设置的标志。不管你设置为YES还是NO,它仍然会覆盖来自CocoaPods的设置。

要解决这个问题:

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

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

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


No such module 错误的原因:

发生此错误的方式有很多种。您是否查看过这些答案以查看是否适用于您的案例?如果您报告这件事,帮助您会更容易。

  1. Xcode : “No such module” error, but the framework is there
  2. “no such module” on Xcode 7 beta 2

【讨论】:

    【解决方案3】:

    (2018 年 7 月 29 日更新)

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

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

    【讨论】:

    • 谢谢它的工作,但它不会影响任何其他功能吗?
    • @ArivenNadar,不,我不知道
    • 07/10/2017,这个解决方案在混合的 Swift/Obj C 项目/Pods 中对我有用
    • 2017 年 10 月 23 日我仍然收到警告...。要使其正常工作,您必须检查所有目标并确保它们都不是粗体。这也包括测试。
    【解决方案4】:

    这是我为我工作的:

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

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

    【讨论】:

    • 有点霰弹枪的方法,但是是的,全新安装通常会有所帮助
    • 这让我失去了警告:(
    • @iLandes 这对我有用,也许你正在做一些不同的事情来消除所有警告
    【解决方案5】:

    当我第二次在我的项目中导入 SDWebImage 时,它​​磨损了未找到模块 FLAnimatedImage,当我安装 pod 时,它警告“... ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES ... - 使用 $(inherited) 标志,或 - 删除构建来自目标的设置。” 最后我找到了完全删除SD的方法,特别是在finder中,在pods的产品中,在模拟器中删除项目,然后重新导入SD。

    【讨论】:

    • 所以,修复它的步骤是:1st.-删除SD(在finder中)2nd.-删除模拟器中的项目3.-再次导入SD如果是这样,下次尝试编辑并为您的答案提供更好的格式。欢迎来到 SO。
    猜你喜欢
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 2019-10-31
    • 2020-10-23
    相关资源
    最近更新 更多