一个 pod update 引发的思考。深入研究警告产生的原因和解决办法。还有更详细的扩展知识。
警告
问题
因为 CocoaPods 的配置与 Target 的配置存在冲突,所以会出现警告。根据上面警告信息查看目录 Pods/Target Support Files/Pods-TestApp/
下存在的两个文件:
- Pods-TestApp.release.xcconfig
- Pods-TestApp.debug.xcconfig
它们的第一行配置就是 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
解决
- 主工程 -> TARGETS -> Build Settings;
- 搜索 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES;
- 选中
Other
,输入$(inherited)
; - 重新
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。
- iOS Default:不可修改,默认值 NO;
- TestPodWarnings:看上图小图标可以知道这是
PROJECT
Build Settings
里面的配置,可以设置$(inherited)
继承自 iOS Default 的配置; - Config.File:根据名字 Pods-TestPodWarnings 可以知道这是 Pod 的配置。上面
问题
的章节已经说过具体的配置文件了(经测试,发现跟 Pods 项目下的 Pods-TestPodWarnings 的 Target 没有关联); - TestPodWarnings:绿色背景的,表示当前 Target。可以修改,也可以设置
$(inherited)
继承自 Pod 的配置; - Resolved:不可修改,根据优先级顺序产生的最终值。
本文由 Bill 创作。
最后编辑时间为: 2019.05.08 at 08:12 am