IOS组件化-多工程联编

当一个工程随着时间的推移,开发人员的增加,工程变得硕大且不好维护,提交代码冲突重重,是时候考虑项目的组件化了。若从一开始就走组件化之路绝逼是一个好办法。

组件化的目的是为了达到解耦,多工程联编更是达到了物理解耦,最理想的是各种模块可以随意的应用到其他的工程。每天蹲坑的时候也会在思索如何去走这条道路。蘑菇街以及反革命主义者的文章给我启发很大,综合两者不失为一种好办法。但本文章主要是介绍如何多工程联编,这几天抽空写了个Demo(写的比较随意,大家忽略细节),废话不多说直接上步骤。

首先上下工程效果图:


建立一个新工程:

工程少不了pods吧,不然第三方的东西管理肿么办,我们偷偷的跑到根目录下去添加一下。为了方便我下载了一个pods的客户端,哈哈,只是不能好好的用命令行装逼了:

打开WorkPlace将Enable Bitcode设为No:

接下来就是各个组件Framework的建立了:

把他添加到WorkPlace里面来:

接下来的几个设置很关键了:

最低支持哪个版本


bitcode设置一下


这个干嘛的脑补

BuildPhases中添加CopyFile,在里面把编译出来的模块Framework,Bundle拷贝到App的ModuleFrames目录下,以便其他引用他的工程可以方便加入:

拷贝一份到Module目录下替换为下面脚本


在CommonModule里面添加一点公用的东西:

一个是公用的宏,一个是调试输出

把对外的头文件拖到public里面:

对外头文件

单独编译一下CommonModule工程,主工程就可以导入CommonModule使用啦:

目录下有拷贝的framework有木有很鸡冻

主工程将他引入:


设置头文件路径

主工程编译:

导入头文件调用公共模块方法


公共模块方法很简单


yeah!第一个模块搞定

要是Framework里面有资源文件怎么办,主工程怎么去调用,组件工程之前能不能相互调用?

接下来我们多建立几个组件工程并且添加部分资源:


CommonModule同样的方式配置建立ModuleOne


建立几个文件,一个ViewController


对外调用接口全部在interface头文件里面

添加ModuleOne工程要使用的资源以Storyboard为例:


添加一个Bundle


设置为ios可用




此处替换为下面的脚本执行


Build Resource资源:


主工程可以引入资源文件


到ModuleFrameworks目录下找到bundle文件

添加ModuleOne的Framework一个组件建立完成,按照此方法可以建立多个组件:


写的demo总共添加了三个一个公共模块两个业务模块

开发协作问题,自己负责的业务模块可以单独编译,并不影响其他业务模块。如果需要全部编译,一个一个去编译会显得有点SB。我们可以建立一个Target Build所有的模块也可以自己调整Framework的编译顺序,太棒了:




这样就可以实现全部工程的编译了,需要注意,模拟器跟真机切换时候需要分别编译,打包发布不能用模拟器编译。

子工程需要添加第三方库时:

把第三方Framework文件通过copy files拷贝到ModuleFrameworks里和自己Framework文件放在一起。

如果新增了第三方库和Bundle,需在copy files中添加拷贝文件。

模块内新增了图片等资源文件,需在Bundle的Resourse Target中将新文件添加到Copy Bundle Resource中才会被打到Bundle包里。

附上工程目录图:

PS:

特别鸣谢(金鸿,俊华)

大家有好的建议或者帮助欢迎留言(模块工程间的共用资源问题欢迎大家讨论留言)

Demo地址:https://pan.baidu.com/s/1hsKFMNa

如需转载标明出处

各位看官觉得有用的话就请Yes-Cui喝瓶水吧,打赏一个

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,653评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,321评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,833评论 0 324
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,472评论 1 266
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,306评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,274评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,658评论 3 385
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,335评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,638评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,697评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,454评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,311评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,699评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,986评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,254评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,647评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,847评论 2 335

推荐阅读更多精彩内容