简介
日常开发中会用到各种已经封装好的库,比如微信支付、高德地图SDK,方便上层业务使用对应的能力。库是共享程序代码的方式,一般分为静态库和动态库。
- 动态库与静态库的区别:
- 静态库:连接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝
- 动态库:连接时不复制,程序运行时由系统动态加载到内存供程序调用,系统只加载一次,多个程序共用,节省内存。系统的.framework是动态库,我们自己建立的.framework是静态库
- .a与.framework的区别
- .a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件
- .a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用
- .a + .h + sourceFile = .framework
创建步骤
使用pod创建framework
pod lib create 库名
使用xcode创建framework
- 打开xcode,新建工程:Xcode->File->New->Project,选择Framework
-
填写工程名称,选择创建路径,保存
- 选择对应Target,在Deployment Info里选择支持的版本
- 设置Build Settings相关参数
- 设置 DEPLOYMENT_POSTPROCESSING = YES
- 设置 STRIP_STYLE 为 Debugging Symbols
- Build Settings -> Compiler Flags添加 -fembed-bitcode 参数
- 确认Build Settings -> Enable Bitcode 为YES(默认是)
- 设置Mach-O Type为static library,保证产物是静态库
- Build Active Architecture Only 为 NO,修改为NO, 否则生成的静态库就只支持当前设备的架构
添加podfile
用终端打开根目录,输入pod init
,可以创建Podfile文件,可在里面依赖其他SDK
target 'XXFramework' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for XXFramework
end
添加podspec
如果需要被其他工程依赖,可通过添加podspec来描述。用终端打开根目录,输入pod spec create XXFramework
,默认创建的描述比较全,可根据具体需求进行修改。此文不做具体描述,后续会专开一文。
编译
同时按住 cmd+b
,即可运行编译。