Swift不支持静态链接库
Apple从IOS8
开始允许开发者使用动态Framework
. 如果要在Swift
项目中使用第三方库, 一种是把代码拷贝到工程中, 另一种是用动态Framework
(使用cocoapods
进行管理). 而无法使用静态库.
造成这个问题的原因主要是Swift
的Runtime
没有被包含在iOS
系统中,而是会打包进App
中(这也是造成Swift App
体积大的原因),静态库会导致最终的目标程序中包含重复的Runtime
(这是苹果自家的解释)。同时拷贝Runtime
这种做法也会导致在纯ObjC
的项目中使用Swift
库出现问题。
CocoaPods的做法:
在纯 ObjC 的项目中,CocoaPods 使用编译静态库 .a 方法将代码集成到项目中。在 Pods 项目中的每个 target 都对应这一个 Pod 的静态库。
对于 Swift 项目,CocoaPods 提供了动态 Framework 的支持,通过 use_frameworks! 选项控制。
这样如果我要兼容IOS7, 就无法在Swift
项目中使用cocoapods
.
在iOS 8及以下的平台上,使用Swift需要将Swift运行时打包到App,会增大App体积。