iOS架构--项目模块化

来源:互联网 发布:linux中export命令 编辑:程序博客网 时间:2024/05/23 15:43
随着项目的发展,代码越来越复杂,管理起来也就越来越麻烦。尤其是在多人合作开发的项目中,代码的维护也变得越来越艰难,随之而来的问题也就越来越多,如果此时进行代码重构,把工作量是非常大的。模块化管理项目就是把当前项目分成多个模块,单独管理,这样比起整个项目来说单独的模块管理更方便。对于一个成熟的项目要做模块化还是很有挑战的既要兼顾项目的开发任务还要去分离模块,同时对于模块的粒度划分也是一个很复杂的问题,在这里我建议嫌弃先划分的粒度粗一点,等一期模块化出来后在对各个模块进行比较细的粒度划分。对于模块化的工具有很多,我选择的是CocoaPods来实现木块化管理。1.首先在oschina上我创建了一个Repository 用来存放cocoapods的podspec文件 ![这里写图片描述](http://img.blog.csdn.net/20171213171743309?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpZGl6aGlsZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)2.在本地创建repo并关联到git上pod repo add 仓库名 git上的地址
pod repo add  ProjectSpec https://gitee.com/Richarl/ProjectSpec.git 
3.接下来我们要创建私有库了 也就是为我们要分离出来的模块创建一个repo了 现在git上创建一个线上repo![这里写图片描述](http://img.blog.csdn.net/20171213163613465?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpZGl6aGlsZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)4.在本地创建木块工程 在这我直接选择用cocoapods创建了一个模板工程
pod lib create RDPodTest

这里写图片描述

 5.编辑RDPodTest中的RDPodTest.podspec文件 ![这里写图片描述](http://img.blog.csdn.net/20171213164838868?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpZGl6aGlsZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 6 验证本地的的podspec文件
pod lib lint RDPodTest.podspec```![这里写图片描述](http://img.blog.csdn.net/20171213165300063?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpZGl6aGlsZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)由于是私有库 所以外部无法访问git上的项目 所以有这个warn执行 pod lib lint RDPodTest.podspec --allow-warnings如上图说明此事podspec文件通关验证了    7.关联git上的repo和本地repo    执行以下命令<div class="se-preview-section-delimiter"></div>
git initgit remote add origin git地址git remote add origin https://gitee.com/Richarl/RDPodTest.gitgit add .git commit -m 'init'git push origin mastergit tag '0.0.1' //关联tag 要与podspec中为version一致git push --tags 
    8.验证远端podspec <div class="se-preview-section-delimiter"></div>
pod spec lint RDPodTest.podspec --allow-warnings
    如图验证通过    8.把RDPodTest.podspec推到我们podspec的repo,步骤1中我们创建的repo<div class="se-preview-section-delimiter"></div>
pod repo push ProjectSpec RDPodTest.podspec
![如图上传成功](http://img.blog.csdn.net/20171213170501785?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpZGl6aGlsZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)    到~/.cocoapods/repos/ProjectSpec/下 查看下工程目录    ![这里写图片描述](http://img.blog.csdn.net/20171213171107865?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpZGl6aGlsZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)    9.接下来就是使用我们的私有库了 在我们的主工程中的Podfile中添加 pod 'RDPodTest' 然后pod install     10.注意 主工程中的Podfile文件中在最上面添加私有库的地址个cocoapods公有地址<div class="se-preview-section-delimiter"></div>

source ‘https://gitee.com/Richarl/ProjectSpec.git’
source ‘https://github.com/CocoaPods/Specs.git’
“`
这里写图片描述
到此使用cocoapod实现模块已经完毕
下一章 将会就模块化之后实现页面与页面 组件与组件之间的解耦-调用-通信写一下

原创粉丝点击