iOS组件化干货系列(一)---如何创建一个组件

组件化流程

准备了解工作:

  1. 什么是组件化?适合什么样的场景?组件化其实就是将我们的业务代码或者一些基础支撑代码变成一个私有库,通过 pod 来拉取代码。这样在项目中我可以随意的加入或者删除别人的代码,也可以指定其他代码的版本
    比如我们在一般的开发中都会使用到AFNetworking,我们可以理解为我们的业务代码就是以这种方式存在的,想用的时候就pod 进来不想用就更改一下podfile 把这个库拿掉,是不是很方便
    组件化的好处在这里就不多做介绍,感兴趣的同学自行查阅

  2. 首先我们需要了解 pod 的工作原理是什么样子的,这样对我们后面的流程化操作会有更好的了解,下面我们先看一张图


    image.png
pod拉取代码的原理:
  1. pod 有一个类似书本的目录的一个仓库,当我们pod search 的时候它会在那个仓库里取寻找,有没有这个东西
  2. 跟pod search 一样 当我们pod install 的时候 它也会在那个目录里去寻找这个库,当找到这个库,通过他的git地址clone到我们本地仓库,当然,这里还有一些本地缓存的策略,这里也不多做介绍

组件化操作流程

Step 1

创建远程代码仓库
首先我们要在我们的私有git服务器里创建一个远程仓库,比如,我们用的是GitLab,那就打开,直接NewProjects,这时候远程是一个空的代码仓库叫 MyTest

image.png
Step 2

创建远程描述文件的仓库(目录)
还是NewProjects,这个名字我们可以叫做iOSPodSpecs,这里面存放的是我们的描述文件,目前也是空的

image.png

加入本地pod 搜索的索引(加搜索目录)
我们先看一下我们本地的目录都有啥

pod repo list
image.png

我们可以看到,这里有两个描述文件的索引仓库(目录),那我们在加一个,刚刚我们创建的那个iOSPodSpecs仓库

pod repo add iOSSpecs http://192.168.10.81/iOSManager/iOSPodSpecs.git
pod repo list
image.png
Step 3

克隆github 上的pod 示例
假如我要创建的组件叫做MyProject, 先创建一个pod 的示例

pod lib create MyProject

然后根据自己需求去选择相应的配置,最后生成一个工程

PS(可忽略)

当然这个示例我们可以从github上拉下来,放在我们的私有git 上,更改它的配置,就不用每一次都需选择这些配置了。
https://github.com/CocoaPods/pod-template.git

把这个template拉下来然后修改里面的配置文件,然后放到我们的远程仓库里,在pod lib create 的时候后面放上我们私有库示例的地址就可以里,这样我们就不用一个一个去选择了

Go On
image.png

最后生成这样的东西

将上面生成的东西全部推送到远程仓库
(1).把之前创建的远程空的仓库 MyTest ,clone 到本地
(2).将MyProject下面的所有东西 拷贝进去

git clone http://192.168.10.81/iOSManager/MyTest.git MyTest
image.png

Classes里面就是我们要放代码的地方

(3).修改描述文件,将本地的代码push 到远程仓库

我们打开workspace 在左边的目录中找到以.podspec的文件然后打开


image.png

下图标出的地方 就是我们需要 修改的东西


image.png
  • 其中summary 和description 必须修改一下,内容随意,name 改成什么都可以,这几个东西只跟pod search 有关
  • homepage 和source 修改成我们私有库的地址和git 地址;比如说MyTest 的git地址是:http://192.168.10.81/iOSManager/MyTest.git;homepage 把git 去掉就可以了

修改之后


image.png

修改完描述文件以后,我们就可以 push 到远程仓库并且打一个tag 上去

git add .
git commit -m 'init pod podspec'
git pull
git push
git tag -a 0.0.1 -m desc
git push origin --tags
  • 注意这里的 s.version 的版本号 在你的远程仓库一定要存在,要不然在后面验证描述文件的时候,远程如果没有那个tag,会不通过

Step 5
推送描述文件 到我们远程私有描述文件仓库里(目录)

cd 到本地仓库里,里面对应会有一个 .podspec 的文件这个就是描述文件

#这里是验证你的描述文件格式是否正确,如果不正确是推不上去的
pod lib lint xxx.podspec --allow-warnings

image.png

这个意思就是你的描述文件是通过了验证,下面就可以把描述文件推送到我们的目录里了,其中 --allow-warnings 建议一直带上,这个意思是忽略你工程中的一些警告,要不描述文件也是通过不了的

pod repo push iOSSpecs XXX.podspec --allow-warnings
image.png

LOOK! 这样描述文件就推送成功了,值得注意的是这里push 后面的名称 是我们step2 的时候加的pod索引的名称

FINAL
至此,我们所有的工作就都做完了,我们用 **pod search **搜索一下看能不能找到MyProject这个库
pod search MyProject
image.png

搜索到了,这样你在其他的工程中直接通过pod 就可以拉到我的代码
如果搜索不到就执行一下面的命令再搜索

rm ~/Library/Caches/CocoaPods/search_index.json

PS

这里很多细节没有说,比如描述文件的写法,podspec 验证命令的其他状况,这些东西需要大家在实际的操作中自己摸索和总结,在这里我就不多做阐述!

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

推荐阅读更多精彩内容