很久之前就要写来着,但是由于种种原因没有写了,最近在搭一个项目的框架,我用的多工程联编的方式,所以趁机有时间写一下.给大家参考一下,如果有写的不好的地方见谅.
展示一下效果
最终效果截图(一)创建方式
第一步肯定是要创建工程的但是创建的工程有两种方式
(1)直接创建最原始的不使用pods
(2)使用pods
我这里使用的是不用pods的(影响应该不大,有兴趣的可以看完后自己测一下)
(二)开始创建工程
(1)创建一个普通的工程
屏幕快照 2018-04-19 下午1.48.48.png 屏幕快照 2018-04-19 下午1.49.26.png 1.png(2)创建两个framework并且各定义一个打印的方法(这里只展示了创建方法自己按照这个方法创建两个就可以了)
屏幕快照 2018-04-19 下午1.50.21.png 屏幕快照 2018-04-19 下午1.50.45.png2.png 3.png
(3)将工程添加进主工程
屏幕快照 2018-04-19 下午2.01.05.png屏幕快照 2018-04-19 下午2.01.31.png
添加进去后的效果.png
(4)重点从现在开始开始关联工程
1.现在我们要做的是主工程调用framework
首先我们先配置相关的配置
添加framework到主工程.png
将两个framework添加到主工程.png
设置子工程的配置
将库的类型设为静态库.png将库的类型设为静态库.png 将需要外界访问的.h的文件放到public中.png
设置主工程
设置库的路径否则访问不到的.png .设置库的路径否则访问不到的png 头文件的路径也需要设置.png 好了在主工程中写代码就可以调用了.png一个库调用另外的一个库(这个时候可以发现报黄了别急下面就干掉他)
一个库调用另外的库的文件也可以了.png 设置需要调用的库的路径.png 设置需要调用的库头文件的路径.png解决!!!
接下来说一下注意事项
1.有时候我们编译的时候会报duplicate symbols for architecture x86_64这个错了解解决方案
2.或者说这个错Can't map file, errno=22 file 'xxx' for architecture arm64(armv7)了解解决方案
3.如果加入-ObjC报错的也可以看第二种方案了解解决方案
- 如果静态库中有category类,则在使用静态库的项目配置中Other Linker Flags需要添加参数-ObjC或者-all_load(这个-all_load慎用)。(这个时候可能会报错请点击这里了解解决方案,可能原因库中的文件有重名的)
5.如果创建的framework类中使用了.tbd,则需要在实际项目中导入.tbd动态库
6.我们生成的动态库有时候真机和模拟器不能共用,如果不嫌麻烦可以使用的时候来回切换路径,否则的话请点击这里framework的创建及合并
网友评论