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

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

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

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

1. 首先我们还是新建一个大文件夹,命名为AlibabaProject,一会项目都放进这里看着立整
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第1张图片
image.png
2. 新建工程,命名为Taobao
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第2张图片
image.png
3. 设置一下证书和版本号还有一些基本代码,让项目可以跑起来
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第3张图片
image.png

iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第4张图片
image.png

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


iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第5张图片
image.png

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


划重点

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

在码云创建仓库


iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第6张图片
image.png

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

5. 打开Finder,进入.cocoapods文件夹
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第7张图片
image.png

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

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

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


iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第8张图片
image.png

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


iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第9张图片
image.png
6. 开始准备天猫工程

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


iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第10张图片
image.png

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


iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第11张图片
image.png

简单配置一下工程,配置出我们的天猫商品详情页还有Targets,是不是忘记Targets是什么了?这个是我们路由跳转需要用到的关联文件,照着我的图配好你们的工程
AppDelegate.m
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第12张图片
image.png

Targets/Target_TmallDetail.h


iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第13张图片
image.png

Targets/Target_TmallDetail.m
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第14张图片
image.png

TmallDetailViewController/TmallDetailViewController.m
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第15张图片
image.png
7. 工程已经准备好,下面为工程创建索引依赖文件

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

$ pod spec create Tmall

创建出来就这样的


iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第16张图片
image.png
8. 配置Tmall.podspec文件,这个地方要注意我红框圈起来的位置
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第17张图片
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

验证通过的示例


iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第18张图片
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
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第19张图片
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时如下图中红框中的内容


iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第20张图片
image.png
14. 执行pod install打开Taobao工程,查看引入的私有组件库
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第21张图片
image.png

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

15. 新建Tmall_Cagetory的私有仓库
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第22张图片
image.png
16. 关联到本地,新建工程,关联进仓库,配置工程版本号、证书
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第23张图片
image.png

iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第24张图片
image.png
17. 为Tmall_Category工程添加CTMediator三方依赖库
platform :ios, '10.0'

target 'Tmall_Category' do
    pod 'CTMediator'
end

安装好之后应该是这样的


iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第25张图片
image.png
18. 新建分类的文件夹及文件
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第26张图片
image.png

iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第27张图片
image.png

还记得怎么映射的吗


iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第28张图片
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" => "[email protected]" }
  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的远程私有仓库
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第29张图片
image.png
23. 将托管平台的索引库地址添加到本地的repo仓库中去
$ pod repo add Tmall_CategoryOpenSpec https://gitee.com/moment_forever/Tmall_CategoryOpenSpec.git

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


iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第30张图片
image.png
24. 将项目spec文件与本地索引库文件关联
$ pod repo push Tmall_CategoryOpenSpec Tmall_Category.podspec --allow-warnings --use-libraries 

搜索一下检查

$  pod search Tmall_Category
25. 在我们的主工程Taobao的Podfile文件里面添加内容
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第31张图片
image.png
26. 安装
$ pod install
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第32张图片
image.png

安装好后应该是这样的


iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第33张图片
image.png
27. 配置ViewController
iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二)_第34张图片
image.png
28. 最后运行模拟器看一下效果吧

你可能感兴趣的:(iOS组件化开发之路(CTMediator),涉及到cocoapods本地库、远程私有库、远程公开库(二))