ios 制作framework静态库

4,111 阅读2分钟

新接手的项目要重构,计划往组件化方向搞。提及组件化可能就会涉及到静态库的封装,之前研究过静态库的封装但是那时候没有写博客的习惯,所以也就没记录。自己用起来也不太方便,现在计划从封装静态库这里总结!

静态库的制作

这里推荐大家移步去看这篇文章,感觉作者写的非常好,相对也比较详细与全面。静态库制作这里自己只是做一个对操作过程中简化和采坑的总结。(这里我采用的是苹果官方推荐的.framework静态库)

    1. 新建一个SDK项目工程。 Snip20210506_2.png
    1. 系统默认会创建该文件,作用相当于项目中统一管理头文件的那个文件。 Snip20210506_3.png
    1. YTKTestManager是自己新创建的一个类,然后头文件在YTKTestSDK.h这个文件中引用了一下。

Snip20210506_4.png

    1. 在xcode 上边找到Build Phase 进行如下配置,其实就是把需要公开的文件放到Public下边,把需要隐藏的放入到Private下边,这里YTKTestManager.h头文件需要直接从项目中拖动Public下边,不然点击底部的+没有它。 Snip20210506_6.png
    1. 继续进行如下配置

Snip20210506_7.png

    1. 继续进行如下配置 Snip20210506_8.png

arm64 等CPU架构说明看这里CPU架构说明

    1. 继续进行如下配置 Snip20210506_10.png
    1. 真机编译生成SDK

Snip20210506_13.png

    1. 模拟器Snip20210506_14.png 编译生成SDK
  • 10.查看编译好之后的framework 20210506165146.jpg

Snip20210506_15.png

  • 11.合并真机与模拟器编译后的framework文件通过lipo -create 命令合并:

路径说明 lipo -create + 模拟器编译后的framework中的YTKTestSDK + 真机编译后的framework中的YTKTestSDK + -output + 合并之后要保存的路径

Snip20210506_18.png

注意:合并模拟器编译后的静态库与真机编译后的静态库报错,have the same architectures (arm64) and can't be in the same fat output file 解决方法可以查看这里自己解决方法进行如下配置。

Snip20210506_1.png

  • 12.合并后倒出的文件如下:

Snip20210506_19.png

  • 13.去掉后缀lipo然后拖入真机编译后的如下图文件夹中对该文件进行替换。 Snip20210506_20.png
  • 14.最后把如下图整个拷贝到桌面,至此制作完毕一个适用于真机与模拟器的framework静态库制作完毕。 Snip20210506_21.png