iOS基础知识之创建静态库

简介

日常开发中会用到各种已经封装好的库,比如微信支付、高德地图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
image.png
  • 填写工程名称,选择创建路径,保存


    image.png
  • 选择对应Target,在Deployment Info里选择支持的版本
image.png
  • 设置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,即可运行编译。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容