随着项目功能的不断增长,愈来愈多的开发人员加入,业务主线也随之愈来愈多,形成耦合愈来愈严重,编译愈来愈慢,测试不独立等一系列问题。为了解决此类状况,咱们能够考虑到使用组件化开发git
概念 组件化就是将一个单一工程的项目, 分解成为各个独立的组件, 而后按照某种方式, 任意组织成一个拥有完整业务逻辑的工程。github
优点bash
组件分类 大致上分三类:基础组件、功能组件和业务组件微信
本篇先来介绍下远程私有库的基本使用,建议按顺序看完以后,回来再看一遍步骤概括,加深了解,若有不足之处,欢迎指出,感谢 : )框架
建立远程索引库和私有库工具
将远程索引库添加到本地 pod repo add 索引库名称 索引库地址
组件化
在本地建立一个pod模板库 pod lib create 组件名称
将框架的核心代码添加到Classes目录下 本地安装测试核心代码是否可用 pod install
修改Spec描述文件 将修改好的模板库上传至远程私有库post
上传代码和打标签
git init
git add .
git commit -m "提交描述"
git remote add origin 远程私有库地址
git push origin master
git tag '0.1.0'
git push --tags
测试
提交spec至私有索引库
pod lib lint --private
pod spec lint --private
pod repo push 索引库的本地名称 xx.podspec
ui
使用
source 官方索引库url
source 私有索引库url
pod '组件名称'
pod install
接下来咱们就来实战如何建立和使用私有库
这里以码云为例,建立一个LXFSpecs的私有索引库,这玩意的做用如其名,就是用来索引的
pod repo
复制代码
如图,目前本地仅有github上的那个公有索引库
将咱们刚刚新建的私有索引库LXFSpecs添加到本地
// pod repo add 索引库名称 索引库地址
pod repo add LXFSpecs https://gitee.com/LinXunFeng/LXFSpecs.git
复制代码
如今本地就有两个索引库,好,索引库的事情就先放一边去了~
码云上的建立操做同上,这里以LXFBase为例,建立基础组件库
到合适的位置建立一个与组件名相同的文件夹,cd进去后,使用以下命令
// pod lib create 组件名
pod lib create LXFBase
复制代码
这里会让你配置一些信息,根据本身的状况自行配置便可。
建立完成后会自动帮咱们打开相应的Example项目,LXFBase目录中会出现如图这些文件,咱们把基础组件相关的东西丢到Classes文件夹中,而且把ReplaceMe.m
文件删除
默认Classes文件夹中存放的文件就是pod install时要下载下来的文件,固然能够经过修改spec文件的配置来更改位置
在Example项目的Podfile文件中能够看到
pod 'LXFBase', :path => '../'
复制代码
模板库已经默认帮咱们在Podfile中指定了LXFBase.podspec的位置,使组件LXFBase能够正常安装使用和方便测试
pod install
复制代码
能够看到咱们已经将本地的组件添加进Example中了,如今能够尽情地作你想作的测试,确保组件的可用。
测试组件没有问题后,咱们接下来就要将podspec文件上传至私有索引库,不过在此以前,须要对spec进行修改。
具体的配置说明能够参考Cocoapods 建立第三方框架
主要的修改内容
s.name = 'LXFBase'
s.version = '0.1.0'
s.summary = 'LXFBase.'
s.description = <<-DESC
LXFBase是基础组件库,包括分类和经常使用工具
DESC
s.homepage = 'https://gitee.com/LinXunFeng/LXFBase'
s.source = { :git => 'https://gitee.com/LinXunFeng/LXFBase.git', :tag => s.version.to_s }
s.source_files = 'LXFBase/Classes/**/*'
复制代码
git add .
git commit -m 'firstCommit'
git remote add origin https://gitee.com/LinXunFeng/LXFBase.git
// 第一次push若是报错的话能够加上-f
// git push -f origin master
git push origin master
复制代码
标签0.1.0
与spec中的s.version
保持一致
git tag '0.1.0'
git push --tags
复制代码
在上传spec文件前咱们能够作一个验证来节省时间,否则每次都推送好久结果仍是验证失败,会气死人的~
// 本地验证不会验证 s.source 中的tag
pod lib lint
复制代码
// 远程验证会验证 s.source 中的tag,若是此时没有打上相应的标签则会报错
pod spec lint
复制代码
若是你刚才没有打标签并上传至远程私有库就来进行远程验证,确定是会报错的
在打完并上传tag后再进行远程验证,就会验证成功了,验证成功后咱们就能够进行下一步操做:提交podspec文件到索引库
--private
,不然会有警告,你能够选择--allow-warnings
来忽略该警告pod lib lint --private
pod spec lint --private
复制代码
// pod repo push 私有索引库名称 spec名称.podspec
pod repo push LXFSpecs LXFBase.podspec
复制代码
这里的操做过程:先将咱们的代码直接push到本地索引库LXFSpecs,推送后会自动帮咱们同步到远程索引库
再来看看码云上的私有索引库LXFSpecs
来测试下搜索咱们的组件
pod search 'LXFBase'
复制代码
这时咱们能够来试试经过pod形式来添加组件LXFBase,建立一个新的项目
pod init
复制代码
// 第二行是为了保证公有库的正常使用
source 'https://gitee.com/LinXunFeng/LXFSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'
复制代码
pod 'LXFBase'
复制代码
pod install
复制代码