iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)

iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(一)

二、远程私有仓库 + 组件化

其实页面的跳转方法和本地库的跳转方法是一样的,麻烦就麻烦在配置远程私有仓库这里,今天我细致板牙的给喃们讲讲远程私有仓库的创建。
今天我们这个教程就以淘宝和天猫为例。

1. 首先我们还是新建一个大文件夹,命名为AlibabaProject,一会项目都放进这里看着立整
image.png
2. 新建工程,命名为Taobao
image.png
3. 设置一下证书和版本号还有一些基本代码,让项目可以跑起来
image.png

image.png

运行起来应该是这样婶儿的


image.png

主工程到此为止先告一段落,下面我们要开始远程私有库的创建了,每一步都是关键


划重点

4. 首先需要索引的文件创建一个远程的私有库,好多博客有的用代码创建、有的创建时机在后面,总之就是乱七八糟的看的一头雾水,这里我就简单粗暴,能点的就不用代码

在码云创建仓库


image.png

解释一下这个仓库是用来做什么的:这个仓库不是用来存储我们每次开发的代码的,当我们想把自己封装好的类给外界分享时就好比pod "AFNetworking"会将AFN的包引进来而不是引进来整个项目,那么你抽出去的那部分代码需要打一个tag版本且有唯一的tag版本号,索引库会关联上这个打上了tag版本号的包,在你搜索pod search或安装的时候才会下载指定路径下的包文件。

5. 打开Finder,进入.cocoapods文件夹
image.png

看到这个master文件夹没,这个就是Cocoapods公共的索引库,你搜索的那些三方库的索引都在这里面呢,如果你做的是公共的三方依赖库那么你的索引就会加到这个文件夹中,但是我们现在要做的是私有的依赖库,所以我们要为自己的依赖库创建一个索引文件夹
打开终端

$ pod repo add TmallOpenSpec https://gitee.com/moment_forever/TmallOpenSpec.git

在你的目录中会多出这样一个文件夹


image.png

使用pod repo命令可以查看你本地存在的索引库


image.png
6. 开始准备天猫工程

先为天猫工程开一个私有仓库


image.png

新建天猫工程,并与仓库关联上,配置好证书什么的让项目可以跑起来,记得修改工程支持的系统版本10.0,此时文件应该是这样的


image.png

简单配置一下工程,配置出我们的天猫商品详情页还有Targets,是不是忘记Targets是什么了?这个是我们路由跳转需要用到的关联文件,照着我的图配好你们的工程
AppDelegate.m
image.png

Targets/Target_TmallDetail.h


image.png

Targets/Target_TmallDetail.m
image.png

TmallDetailViewController/TmallDetailViewController.m
image.png
7. 工程已经准备好,下面为工程创建索引依赖文件

进入工程的目录,就在仓库的那层跟目录就行

$ pod spec create Tmall

创建出来就这样的


image.png
8. 配置Tmall.podspec文件,这个地方要注意我红框圈起来的位置
image.png
9. 配置好文件后,将所有文件提交到远程仓库上面
10. 为你的工程打上tag(此处的tag版本号是要和你podspec文件里面的spec.version字段相对应的)
$ git tag 0.0.1

将tag推到远端

$ git push --tags
image.png
11. 验证spec文件的有效性(本地和远程)

本地

$ pod lib lint Tmall.podspec --allow-warnings

远程

$ pod spec lint Tmall.podspec --allow-warnings

验证通过的示例


image.png

如果没通过验证怎么办,不要慌

如果验证出错需要修改spec文件(如何修改spec文件呢,看提示你的ERROR里面的内容,不要看WARN,在各种地方查询错误,尝试修改,在这个过程总你会开始更深入的理解这个文件的用法,这才是让你成长的地方)
重新提交文件,并重新打tag
删除之前的tag命令
git tag -d 0.0.1
git push origin :refs/tags/0.0.1

12. 验证都通过了之后将项目spec文件与本地索引库文件关联
$ pod repo push TmallOpenSpec Tmall.podspec --allow-warnings
image.png

检验一下

$ pod search Tmall
13. 在主工程Taobao中新建Podfile文件并pod 'Tmall'
source 'https://gitee.com/moment_forever/TmallOpenSpec.git'

platform :ios, '10.0'

target 'Taobao' do

    pod 'Tmall', '0.0.1'
    
end

上面的source就是用我们自己创建的索引库去查找依赖框架的
这个source是哪里来的呢,就是我们pod repo时如下图中红框中的内容


image.png
14. 执行pod install打开Taobao工程,查看引入的私有组件库
image.png

组件工程准备好了之后,我们使用同样的方法创建组件工程的分类工程

15. 新建Tmall_Cagetory的私有仓库
image.png
16. 关联到本地,新建工程,关联进仓库,配置工程版本号、证书
image.png

image.png
17. 为Tmall_Category工程添加CTMediator三方依赖库
platform :ios, '10.0'

target 'Tmall_Category' do
    pod 'CTMediator'
end

安装好之后应该是这样的


image.png
18. 新建分类的文件夹及文件
image.png

image.png

还记得怎么映射的吗


image.png
19. 配置Tmall_Category的podspec文件

新建

$ pod spec create Tmall_Category

配置

Pod::Spec.new do |spec|
  spec.name         = "Tmall_Category"
  spec.version      = "0.0.1"
  spec.summary      = "A short description of Tmall_Category."
  spec.homepage     = "https://gitee.com/moment_forever/Tmall_Category"
  spec.author             = { "Cloud" => "haohao10987@163.com" }
  spec.platform     = :ios, "10.0"
  spec.source       = { :git => "https://gitee.com/moment_forever/Tmall_Category.git", :tag => "#{spec.version}" }
  spec.subspec 'Tmall_Category' do |sub|
    sub.source_files = "Tmall_Category/Tmall_Category/Tmall_Category/*.{h,m}"
  end
  spec.dependency "CTMediator"
end
20. 全部提交到仓库,打上tag
$ git tag 0.0.1
$ git push --tags
21. 本地和远程的验证

本次的验证由于CTMediator用了一些系统底层的库,所以在验证时要加--use-libraries参数

$ pod lib lint Tmall_Category.podspec --allow-warnings --use-libraries
$ pod spec lint Tmall_Category.podspec --allow-warnings --use-libraries
image.png
22. 为Tmall_Category.podspec文件与索引文件关联,但是目前我们还没有为Tmall_Category创建索引关联文件,接下来创建
23. 创建Tmall_CategoryOpenSpec的远程私有仓库
image.png
23. 将托管平台的索引库地址添加到本地的repo仓库中去
$ pod repo add Tmall_CategoryOpenSpec https://gitee.com/moment_forever/Tmall_CategoryOpenSpec.git

在我们本地的.cocoapods文件夹中会多出Tmall_Category的索引文件夹


image.png
24. 将项目spec文件与本地索引库文件关联
$ pod repo push Tmall_CategoryOpenSpec Tmall_Category.podspec --allow-warnings --use-libraries 

搜索一下检查

$  pod search Tmall_Category
25. 在我们的主工程Taobao的Podfile文件里面添加内容
image.png
26. 安装
$ pod install
image.png

安装好后应该是这样的


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