研究办法:创建不同类型的同名项目,比较其 project.pbxproj 文件的差异
第1步:
用 Xcode 创建项目名为 T7 的 framework,不要 test,不要任何附加的东西
将项目根目录 T7 改名为 T7-framework
第2步:
用 Xcode 创建项目名为 T7 的 static library
将项目根目录 T7 改名为 T7-library.static
第3步:
比较差异
vimdiff \
T7-framework/T7.xcodeproj/project.pbxproj \
T7-library.static/T7.xcodeproj/project.pbxproj
| static | framework | |
|---|---|---|
| product | libT7.a | T7.framework |
| include | ||
| install path | usr/local/lib/ | $(LOCAL_LIBRARY_DIR)/Frameworks |
|
productType | com.apple.product-type.library.static | com.apple.product-type.framework |
MACH_O_TYPE | staticlib | mh_dylib |
重要:
1. framework 只是容器,可以装 static lib 也可以装 dynamic lib,修改 mach-o type 就可以完成,且其他特性不发生改变。
2. 由于 static lib 很难转化为 framework,而 framework 也可以装 static lib,所以,一般情况下,创建项目时选择 framework 就好。
通过创建并比较Xcode的静态库(static library)和动态框架(dynamic framework)项目,发现framework是一个容器,能够容纳静态库或动态库。关键点在于,framework的mach-o类型可调整,静态库转换为framework较为困难,因此通常建议直接创建framework项目。
958

被折叠的 条评论
为什么被折叠?



