制作Cocoapods组件库
一、在制作组件库之前,我们要明白下面几点的概念,后面会上详细的教程
- 本文讲的是使用私有索引库(我们自己创建)来维护组件(不使用公共仓库master)
- 组件添加到公共仓库中需要注册Trunk账号: 传送门
- 在Git(或马云等其他仓库)创建一个私有的仓库,当做<私有索引文件仓库>,后边用来储存索引文件(项目名称:xxSpecs)
- 在Git(或马云等其他仓库)创建一个公开/私有的仓库,当做<组件仓库>,后边用来储存组件(项目名称:xxKit)
- CocoaPods服务器不储存我们的代码,只储存索引文件
- 制作好组件之后,索引文件里会储存组件主页(s.homepage)的地址,组件(s.source)的地址。(这里一定要注意:这两个地址一定要与组件地址一致,虽然会自动生成地址 ,不过会存在不一致的情况 。
- 使用时,先通过CocoaPods服务器更新<私有索引文件仓库>到本地;项目中Pod某个组件的时候,会在本地<私有索引文件仓库>中找到这个组件的索引文件,从索引文件里拿到<组件仓库>的地址,从这个地址把代码下载到项目中
二、操作步骤
1.索引库
1)创建私有索引库
· 这里我们选用码云创建私有库,如下图
截屏2022-10-19 上午9.14.28.png在这里输入你的索引库的名字,并点击创建
截屏2022-10-19 上午9.40.24.png
创建好仓库后,记得点一下初始化readme文件
截屏2022-10-19 上午10.00.34.png
创建好索引仓库后,将索引仓库地址存储到CocoaPods服务器上,打开终端进入桌面输入:
pod repo add xxSpecs https://github.com/zhanghua19860221/xxSpecs.git (地址替换为你所创建仓库实际地址)
2)检查是否安装成功
cd ~/.cocoapods/repos/xxSpecs
2.组件
先在码云上创建好你的工具库或者是组件库,和创建索引库是一样的
截屏2022-10-19 上午10.05.55.png
1)下载并创建组件模版
cd Desktop
下载组件模版并设置组件名(这里的名字要与远程仓库名称一致)
pod lib create BaseTool
输入完命令后,会出现让你配置这个组组件的选择
// 使用哪种系统的模板
What platform do you want to use?? [ iOS / macOS ]
ios
// 使用哪种语言
What language do you want to use?? [ Swift / ObjC ]
Swift
// 是否创建测试Demo
Would you like to include a demo application with your library? [ Yes / No ]
Yes
// 使用哪种测试框架
Which testing frameworks will you use? [ Quick / None ]
None
// 是否需要测试视图
Would you like to do view based testing? [ Yes / No ]
Yes
截屏2022-10-19 上午10.09.51.png
从上图来看,就是创建成功了,创建成功会自动打开你刚才创建的工程
截屏2022-10-19 上午10.13.05.png
这里有一个注意点
WX20221019-101458.png上图中两个箭头的地址,要替换成刚才我们创建好的私有库BasetTool的地址,比如https://gitee.com/avenhu/base-tool.git,否则后面的步骤会出问题
2)组件内文件与图片资源的添加
- 把自己的代码(类文件)直接复制到桌面xxKit/xxKit/Classes 文件夹内 ( Classes 是专门用来存放组件类文件 )
- 把自己的图片资源直接复制到桌面xxKit/xxKit/Assets 文件夹内( Assets 是专门用来存放组件图片资源 )
找到刚才我们创建好的组件库地址
截屏2022-10-19 上午10.18.25.png
找到Example,对他进行一次pod install
截屏2022-10-19 上午10.20.28.png
3)修改索引文件
- 索引文件里会储存组件主页(s.homepage)的地址,组件(s.source)的地址。(这里一定要注意:这两个地址一定要与组件仓库的地址一致,虽然会自动生成地址 ,不过会存在不一致的情况 。
- 还要修改s.version ,每次修改组件后推上去前,都要递增版本号,并且tag号需要和版本号一致,并且组件要编译通过才能推到仓库和索引库。下图为修改后的索引文件:
4)把做好的组件推送到自己的组件仓库
- cd 到桌面xxKit 目录下
cd /xxKit
- 添加代码到git缓存区
git add .
- 提交一个缓存区代码
git commit -m "xxKit组件初始化"
- 关联Github的远程组件仓库
git remote add origin git@github.com:zhanghua19860221/xxKit.git(这里需要用 SSH 地址)
- 推送版本到master分支(-f强制推送,覆盖掉之前的所有文件)
git push origin master -f
- 添加版本标签(标签号必须与索引文件里的标签号一致)
git tag 0.1.0
- 标签推送到组件仓库
git push --tags
- 验证本地索引
pod lib lint --allow-warnings(--allow-warnings 可以忽略警告)
- 验证远程索引文件
pod spec lint xxKit.podspec --verbose
3.关联CocoaPods服务器
1)制作好的组件关联CocoaPods服务器刚才创建的私有索引库
- cd 桌面组件xxKit目录下
cd /xxKit
- 推送组件的索引文件到服务器,并告诉服务器存在哪个私有仓库中
截屏2022-10-19 上午11.09.38.pngpod repo push xxSpecs xxKit.podspec --allow-warnings
上图就是推送成功了
- 查看本地的CocoaPods仓库(可看到公共库和自己的私有库)
pod repo list
- 更新本地CocoaPods仓库(这里也一定要注意,这一步不可缺少)
pod repo update --verbose
到这里我们自己封装的组件已经成功上传到私有库,并且可以被cocoaPods管理了。
五、项目中引用私有组件
1.配置Podfile文件
方案一:
source 'https://github.com/zhanghua19860221/xxSpecs.git'
pod 'xxxKit'(可不指定分支)
方案二:
pod 'xxKit', :git => 'https://github.com/zhanghua19860221/xxKit.git', :branch => 'master_0803'(可指定分支)
执行pod install之前请务必先执行pod repo update,之前已经说过了,每次pod其实是在本地抽取,因为刚刚上传到私有仓库,本地肯定还不知道,pod repo update更新一下