前言
如果要对一个第三方的SDK做二次封装,并且封装为一个Framework
,那这个Framework
是该使用静态库呢?还是动态库?
基础的SDK可能是动态库或静态库,二次Framework
可能是动态库或静态库,那么共有四种组合:
- 静态库(基础)、静态库(二次)
- 静态库(基础)、动态库(二次)
- 动态库(基础)、静态库(二次)
- 动态库(基础)、动态库(二次)
一、静态库+静态库
创建静态库First.framework
,创建静态库Second.framework
,并在Second.framework
中引入First.framework
;
在TestObject工程中,使用静态库Second.framework
,需要引入Second.framework
而且First.framework
必须在工程目录中(可以不引入工程)
使用
Second.framework
时,First.framework
必须在工程目录中(可以不引入),否则会报错
二、静态库+动态库
创建静态库First.framework
,创建动态库Second.framework
,并在Second.framework
中引入First.framework
;
在TestObject工程中,使用动态库Second.framework
,只需要引入Second.framework
一个就可以了;
三、动态库+静态库
创建动态库First.framework
,创建静态库Second.framework
,并在Second.framework
中引入First.framework
;
在TestObject工程中,使用动态库Second.framework
,必须同时引入Second.framework
与First.framework
;
并设置Second.framework
的Embed
为Do Not Embed
,设置First.framework
的Embed
为Embed & Sign
;
四、动态库+动态库
创建动态库First.framework
,创建动态库Second.framework
,并在Second.framework
中引入First.framework
;
在TestObject工程中,使用动态库Second.framework
,必须同时引入Second.framework
与First.framework
;
并把二者的Embed
设置为Embed & Sign
;