iOS:use_frameworks 的作用

发布时间 2023-04-21 13:43:24作者: dulinshun

Swift 项目中的 Podfile 中默认会有一个 use_frameworks!,本篇说一下 use_frameworks!

1. Pod 引入组件的类型

iOS 使用 Pod 引入组件,主要引入以下类型的组件。

类型 1:静态库类型组件。可以为 `.a` 或 `.framework` 类型的静态库。
类型 2:动态库类型组件。可以为 `.framework` 类型的动态库。
类型 3:源码类型组件。

对于源码类型的组件,pod 引入组件时,会先将源码打包成 .a.framework 类型的静态库或者动态库,然后这些 静态库动态库 随着编译一起放在二进制可执行文件内。

2. use_frameworks! 的功能

use_frameworks!常用的形式

use_frameworks! :linkage => :static  # 将引入的源码组件打包成静态库。只对源码组件有效
use_frameworks! :linkage => :dynamic # 将引入的源码组件打包成动态库。只对源码组件有效
use_frameworks!     # 根据 pod 类型来决定应该打包成静态库还是动态库。
# use_frameworks!   # 不使用

使用 use_frameworks! 时,如果没有指定源码库打包类型,则会根据对应组件的 podspec 文件中的设置来决定。设置字段如下:
s.static_framework = true/false

3. OCSwift项目

Swift项目:

必须使用 use_frameworks!

OC 项目:

可选使用 use_frameworks!
如果引入了 Swift 三方库,则使用
引入的全是 OC 三方库,则可以不用

总之:

  1. pod 引入了 Swift 的源码三方库,就使用 use_frameworks!
  2. 引入了 dynamic framework 时,使用 user_framework!
  3. 其他情况可不用。