模块组件化——私有pod制作详细教程
闲话不多说,折腾了半天来和大家分享下私有pod的制作。
制作前的需要准备工作
- GitHub或者码云的账号(因为GitHub私有需要收费,接下来的制作我们使用的码云)
- Xcode
- 终端
在码云上创建两个两个项目,其中一个为私有,另一个是公开的
如下图
名字的话随意,只要你不弄错就可以。
本地创建后续要被共享的Lib工程
1.打开终端cd到你要创建的目录下(方便下我就放在桌面了)
2.然后输入pod lib create &(私有仓库的名字) 命令创建一个待上传的模版,如图
3.之后会有选项对私有的pod库进行一些选择
屏幕快照 2017-08-18 下午4.08.39.png此处在桌面会生成一个文件夹,包括工程目录及文件介绍。ps:ReplaceMe.m文件为示例文件,可删除。你自己写的文件放在此处
屏幕快照 2017-08-18 下午4.15.06.png配置 .podspec 后缀文件
s.name : 项目名
s.version : 版本号(需跟后面打 Tag 的值相等)
s.homepage : 项目主页(请注意,这里的地址跟git仓库地址有一定差别,请看清截图示例并区分)
s.license : 开源协议(这里我们选择 MIT )
s.source : Git 仓库地址(第二步所创建的仓库地址)
s.ios.deployment_target : 项目最低支持版本
s.source_files : 具体去那个目录下下载特定共享代码(注意:这里的地址与 .podspec 文件同级目录开始,,示例:PrivateLib/Classes/** /*表示如下目录下的所有文件
s.frameworks :项目所依赖的系统库(如果需要)
s.dependency :项目所依赖的第三方库(如果需要)
标记了红框的请务必记得修改,不然会出现各种奇葩的错误
验证 .podspec文件的格式的正确性
终端cd到该目录,输入
pod lib lint
屏幕快照 2017-08-18 下午4.27.11.png
将本地PrivateLib工程与远程私有 Git 仓库关联
git remote add origin 远程私有仓库地址
git pull origin master --allow-unrelated-histories
拉去数据的时候会出现冲突,我们把head里的删掉,保留远程的
git add .
git commit -m "fix"
git push origin master
屏幕快照 2017-08-18 下午4.30.17.png
屏幕快照 2017-08-18 下午4.30.57.png
屏幕快照 2017-08-18 下午4.32.54.png
做完了这几步我们在码云中的私有项目可以看到如下图所示
屏幕快照 2017-08-18 下午4.34.38.png
然后本地和远程验证文件有效性
pod spec lint
此处会有报错,请不要慌张,那是因为我们没有tag
屏幕快照 2017-08-18 下午4.38.46.png执行以下代码
git tag -a 0.1.0 -m '0.1.0标签'
git push –-tags
pod spec lint
屏幕快照 2017-08-18 下午4.40.42.png
好了此处一切ok。很关键
上传.podspec到第一个远程私有仓库
1.首先进入 ~/.cocoapods/repos 目录下
2.然后创建一个私有仓库目录
pod repo add $(私有仓库名字) 第一个私有仓库地址
如下图所示,我们可以看到shirePrivatePodspec文件已经存在了,如果不小心打错了也没关系可以删除的,删除代码如下
pod repo remove (文件名)
3.最后向私有的 PrivatePodspec 远程仓库中提交 .podspec()
终端进入到之前桌面创建的文件,然后推送
4.最后就可以搜索你的私有库了
磕磕绊绊的折腾了一整天,参考了好多的文章,假如你们还有碰到一些问题的话可以参考下一下这几篇文章。写的不好,新尝试模块组件化的人少走点弯路
更新私有库,构建不同版本
1.修改spec文件中的s.version 号;
2.修改更新code,提交code在Sourcetree打新的tag;
3.两步,新增加tag,在桌面创建的文件重新push一遍
4.pod search 验证一下结果;
< font color=#00ffff >##记得重新在地址为桌面创建的私有文件库中输入一下代码</font>
pod repo push shirePrivatePodspec shirePrivateLib.podspec
使用私有库
podfile里面添加如下代码
source'https://gitee.com/shirebella/shirePrivatePodspec.git' //自己的私有spec仓库
source'https://github.com/CocoaPods/Specs.git' //cocoapods公共spec仓库
target "TableViewTest" do
pod 'shirePrivateLib', '~> 0.1.1'
end