ios 制作framework静态库
2021-05-06 本文已影响0人
90后的晨仔
新接手的项目要重构,计划往组件化方向搞。提及组件化可能就会涉及到
静态库
的封装,之前研究过静态库的封装但是那时候没有写博客的习惯,所以也就没记录。自己用起来也不太方便,现在计划从封装静态库这里总结!
静态库的制作
这里推荐大家移步去看这篇文章,感觉作者写的非常好,相对也比较详细与全面。静态库制作这里自己只是做一个对操作过程中简化和采坑的总结。(这里我采用的是苹果官方推荐的
.framework
静态库)
-
1. 新建一个SDK项目工程。

-
2. 系统默认会创建该文件,作用相当于项目中统一管理头文件的那个文件。

-
3.
YTKTestManager
是自己新创建的一个类,然后头文件在YTKTestSDK.h
这个文件中引用了一下。

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

-
5. 继续进行如下配置

-
6. 继续进行如下配置

arm64 等CPU架构说明看这里CPU架构说明
-
7. 继续进行如下配置

-
8. 真机编译生成SDK

-
8. 模拟器
Snip20210506_14.png
编译生成SDK
-
9.查看编译好之后的framework


-
10.合并真机与模拟器编译后的framework文件通过
lipo -create
命令合并:
路径说明
lipo -create
+模拟器编译后的framework中的YTKTestSDK
+真机编译后的framework中的YTKTestSDK
+-output
+合并之后要保存的路径

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

-
11.合并后倒出的文件如下:

-
12.去掉后缀
lipo
然后拖入真机编译后的如下图文件夹中对该文件进行替换。

-
13.最后把如下图整个拷贝到桌面,至此制作完毕一个适用于真机与模拟器的framework静态库制作完毕。
