//温馨提示这种结构的代码可以上线,结构清晰,适合多人开发很好用,喜欢就点个赞👍谢谢
废话不多说直接上,静态库,动态库的区别自己查
1.首先创建一个frameWork的工程
2.在其中创建一个类用于测试使用
3.将头文件公开
为了让使用者知道有哪些方法可以用,我们需要公开头文件,我们需要在 并且将Target->Build Phases->Headers中的Project中要暴露的头文件拖拽到Pulic里面,这里我们公开MyTest.h就是这样
4、修改配置
我们需要把Build Active Architecture Only修改为NO,否则生成的静态库就只支持当前选择设备的架构。
5、修改生成的Mach-O格式,因为动态库也可以是以framework形式存在,所以需要设置,否则默认打出来的是动态库。将target->BuildSetting->Mach-o Type设为Static Library(默认为Dynamic Library):
6、编译(与上一篇的步骤一样)
我们分别选择Generic iOS Device和任意一个模拟器各编译一次,编译完后,我们会看到工程中Products文件夹下的LibTest.framework由红色变成了黑色,然后show in finder,看看生成的文件:
我们看到它为真机和模拟器都生成了LibTest.framework静态库。(第一个是真机的第二个是模拟器的)
7.如果想要让模拟器和真机通用一个静态库,我们可以使用终端命令来实现。合并的命令与上面不同的是:framework静态库合并的不是framework,而是framework下的二进制文件,命令为:lipo -create 第一个framework下二进制文件的绝对路径 第二个framework下二进制文件的绝对路径 -output 最终的二进制文件路径:
注意output的文件的名称必须和原来的一直因为后面要把这个二进制文件替换掉
然后回车可以发现多了一个MyFrameWork这个是一个模拟器和真机通用的一个frameWork
接下来就是将生成的这个二进制文件把原来的framework中的二进制替换然后导入工程就可以用了
8.测试一下看看能不能用
完美运行(今天太累了明天写关于多工程联编的内容)有不明白的可以问我qq就是打印出来的内容如果喜欢请点赞谢谢!
更新: 多工程联编点击进入
注意:
如果静态库中有category类,则在使用静态库的项目配置中Other Linker Flags需要添加参数-ObjC或者-all_load。但是-all_load慎加,有可能会出现别的错误具体请点击多工程中的那点事
如果创建的framework类中使用了.tbd,则需要在实际项目中导入.tbd动态库。
网友评论