美文网首页iOS 好东西iOS多工程联编iOS进阶
iOS多工程联编最新详解版(2018-4-19)及framewo

iOS多工程联编最新详解版(2018-4-19)及framewo

作者: _菩提本无树_ | 来源:发表于2018-04-19 14:46 被阅读358次
    很久之前就要写来着,但是由于种种原因没有写了,最近在搭一个项目的框架,我用的多工程联编的方式,所以趁机有时间写一下.给大家参考一下,如果有写的不好的地方见谅.

    展示一下效果

    最终效果截图

    (一)创建方式

      第一步肯定是要创建工程的但是创建的工程有两种方式
      (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.png
    2.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报错的也可以看第二种方案了解解决方案

    1. 如果静态库中有category类,则在使用静态库的项目配置中Other Linker Flags需要添加参数-ObjC或者-all_load(这个-all_load慎用)。(这个时候可能会报错请点击这里了解解决方案,可能原因库中的文件有重名的)

    5.如果创建的framework类中使用了.tbd,则需要在实际项目中导入.tbd动态库
    6.我们生成的动态库有时候真机和模拟器不能共用,如果不嫌麻烦可以使用的时候来回切换路径,否则的话请点击这里framework的创建及合并

    好了这就是一个完整的工程了,喜欢点个赞!有问题可以留言,如果有写的不好的地方欢迎各位指正!该文档会随着项目的进度随时更新!

    ,

    2018.7.13更新pods工程创建多工程

    1.首先创建一个pods工程

    2.按以上步骤完成继承frameWork工作

    3.在需要引用pods工程中文件的framework中设置相关路径,如下图接下来就可以使用了

    屏幕快照 2018-07-13 上午11.36.07.png 屏幕快照 2018-07-13 上午11.39.18.png 屏幕快照 2018-07-13 上午11.39.30.png 屏幕快照 2018-07-13 上午11.39.39.png

    OK了如果还有什么问题欢迎随时留言!

    相关文章

      网友评论

      • 编程的蚂蚁:写的很详细,但是我有一个问题,要是实现另外一种多工程编译,就是最外面有并列的N和工程,然后每一个工程里面都有多个子工程.该怎么下手?
        _菩提本无树_:@编程的蚂蚁 那你们是几个人开发呢?
        编程的蚂蚁:@_菩提本无树_ 在工程达到一定复杂度的时候,可以将工程拆成三个大工程,一个是Host工程,一个Com工程,一个Pods工程,分别对应主工程,业务相关的逻辑组件,基础工程.这样的话,主工程实现了壳化,把功能更加细化,不同的编程人员去实现对应的功能.通过config文件来实现依赖,这样的耦合性大大降低,从单一的一个App开发,能快速转变成App群的开发.
        _菩提本无树_:@编程的蚂蚁 为什么要这么做呢?那样的话可以做,但是做的时候你要解决很多的问题
      • 259bdd522309:楼主能不能写个用cocoapods的文章呀?
        _菩提本无树_:这个回的有点晚哈,我试了一下没问题,还是按照上面说的步骤来就行.最外层的工程是cocoapods工程.里面的framework如果需要调用pods的东西只需要把pods的路径倒进去就可以直接引用.详细内容看上面的我的补充内容
        _菩提本无树_:@月色在谁家 尽量更新😁,工作不忙的话会及时更新。
        _菩提本无树_:@月色在谁家 6月12号前更新cocoapods版的,其实相差不是很多

      本文标题:iOS多工程联编最新详解版(2018-4-19)及framewo

      本文链接:https://www.haomeiwen.com/subject/wzlwkftx.html