ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
in 技术 with 0 comment

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES

in 技术 with 0 comment

一个 pod update 引发的思考。深入研究警告产生的原因和解决办法。还有更详细的扩展知识。

警告

Snipaste_2019-04-15_18-38-52.png

问题

因为 CocoaPods 的配置与 Target 的配置存在冲突,所以会出现警告。根据上面警告信息查看目录 Pods/Target Support Files/Pods-TestApp/ 下存在的两个文件:

它们的第一行配置就是 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES

解决

  1. 主工程 -> TARGETS -> Build Settings;
  2. 搜索 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES;
  3. 选中 Other ,输入 $(inherited)
    Snipaste_2019-04-15_16-53-10.png
  4. 重新 pod install 或者 pod update

扩展问题

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES 的作用?

在 Build Setting 里,新的 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES 取代 EMBEDDED_CONTENT_CONTAINS_SWIFT(在 Xcode8 抛弃)。这个新的设置项表示 Xcode 始终将 Swift 标准库嵌入到 Target 包中,无论 Target 包中是否包含 Swift 代码。

$(inherited) 的作用?

继承更低一级的配置。具体配置优先级顺序可以切换到 Levels 模式(在搜素框的左边) 查看,Level 从高到低分被是 Resolved > TestPodWarnings > Config.File(Pods-TestPodWarnings) > TestPodWarnings > iOS Default。
Snipaste_2019-04-15_17-23-06.png

Responses