Framework 详解
2021-06-25 本文已影响0人
iVikings
静态库:
即静态链接库。以 .a
或者 .framework
为文件后缀名。
在程序编译时会被链接到二进制可执行文件中。
动态库:
即动态链接库。以 .tbd
(之前叫.dylib
) 或者 .framework
为文件后缀名。
在程序编译时并不会被链接到二进制可执行文件中,而是在程序运行是才被载入。
系统的
.framework
是动态库,我们自己创建的.framework
一般是静态库。
区别:
- 静态库代码装载的速度快,执行速度略比动态库快。
- 动态库更加节省内存,可执行文件体积比静态库小很多。
- 静态库是在编译时加载,动态库是在运行时加载。
区分 Framework 是 动态库 or 静态库
file *.framework/*
-
Mach-O dynamically
:动态库
-
current ar archive
:静态库
Framework, Libraries, and Embedded Content
Xcode 中集成 Framework 有三种状态:Do Not Embed
、Embed & Sign
和 Embed Without Signing
- Embed
嵌入,用于动态库,动态库在运行时链接,所以它们需要被打进bundle里面
- *Signing:
只用于动态库,如果已经有签名了就不需要再签名。
- 判断动态库是否已签名
codesign -dv *.framwork
code object is not signed at all
或adhoc
:表示未签名,选择Embed & Sign
- 其他情况表示已经签名,选择
Embed Without Signing