远程私有库
由于博客地址无效, 故把之前的博文转来简书
转自2017-02-26
1. 先创建自己的索引库
先在终端输入下面的命令, 查看当前电脑本地的pod和远程的pod
pod repo

进入本地pod库查看

YYSwiftProjectSpecs是之前创建的一个索引库,现在先把这个删除.
进入本地pod库,repos文件夹
pod repo remove YYSwiftProjectSepcs
删除后,再一次查看pod库,发现就一个master了
添加自己的索引库
-
先去托管平台,创建一个项目.这里我选择的是coding,免费的. 项目名是 YYProjectSpecs,创建个空项目.
-
添加新的pod spec文件
pod repo add YYProjectSpecs(pod名称) xxx(git地址)
去本地pod索引库中查看多了一个索引库

自己的索引库就添加成功了,然后去创建一个基础库,存放一些基础组件,我这里就放一个分类.
2. 创建组件仓库, 可以创建多个, 然后添加到自己的索引库中
-
去coding上创建一个空仓库
-
快速生成一个pod模版
pod lib create YYCategory
-
把远程空仓库和当前YYCategory的git关联起来
- 先进入pod模版文件夹
- git add .
- git commit -m ‘’
- git push (没有远程,怎么push啊,)
- 按照提示的跟远程git关联起来
- git remote add origin xxx(远程git地址)
- git push origin master
- 完成后去coding查看,代码都推送到远程了,说明成功了
-
按照之前本地库的使用,把代码放在Classes里, 这里添加了一个category, Protocol
-
更改spec, s.source需要把你远程仓库的git添加上来, 其他的根据你自己的需求
s.source = { :git => 'https://git.coding.net/yangyu2010/YYCategory.git', :tag => s.version.to_s }
-
更新Demo的pod, 测试你的代码
-
没有问题,就把本地刚更改的提交到远程git上
-
给git打tag标签
-
提交代码后, 可以先验证下spec文件.
pod lib lint (本地) pod spec lint (远程) --allow-warnings (加在后面可以忽略警告)
-
-
远程验证的时候报错,branch 0.1.0, 没有tag, 找不到对应的版本号,因为我们在spec里填写的s.source, 其中tag值对应的是当前版本号.
s.source = { :git => 'https://github.com/yangyu2010@aliyun.com/YYCategory.git', :tag => s.version.to_s }
-
-
打完tag后,再次验证,就没问题了
-
3. 把当前spec提交到自己创建的索引库中
目前为止,搭建就差不多了.剩下的就是先把当前spec提交到我们自己创建的索引库YYProjectSpecs里,然后在Example里测试.
-
把当前spec提交到自己的索引库里
1. pod repo
2. pod repo push YYProjectSpecs YYCategory.podspec
pod repo push (自己创建的索引库名字) (当前spec文件)

没有提交成功,按照提示的更改spec文件.因为更改过代码,所有你得更新版本,重新打tag.然后提交到远程. 按照前面的7-8步重新提交,打tag.

重新push成功后,如图.去本地spec文件夹中查看.当前的spec文件就在其中了.

4. Example中做测试
来到pod模版自动生成的项目中, 打开Podfile, 如下.当前path指向是本地路径

更改pod,然后 pod install就可以使用了


subspec
框架中有个Category, Protocol两个分类,有时我们会只用到其中的一个.但是按照之前的方法我们会把所有的文件都下载,即使你不是用.这个时候你要划分小模块了.
-
先看下AFN是怎么划分的
pod search afn

-
修改spec文件
#s.source_files = 'YYCategory/Classes/**/*' s.subspec 'Category' do |cc| cc.source_files = 'YYCategory/Classes/Category/**/*' end s.subspec 'Protocol' do |pp| pp.source_files = 'YYCategory/Classes/Protocol/**/*' end
先把source_files注释,然后根据你的分类,指定当前分类的路径和其他属性
-
然后,提交代码,打tag,然后验证spec文件,最后把新版本提交到本地的索引库中.
-
修改Podfile, 然后install后就可以正常使用了.