iOS组件库创建(二)
iOS组件库创建(一)
四、私有组件库更新
1. 打开你的MJKit.podspec文件,将原本的版本号改为0.2.0,与下面提交的tag保持一致
2、代码更新,在pods的MJKit文件夹中创建新的视图MJView如下图:
Classes文件夹本身就有,只需要添加显示,如图:
代码提交: cd /Users/MacPro3/Desktop/project/MJKit
git add . git commit -m '更新描述'
git pull //可能在更新之前需要先拉下代码
git push origin master
3、版本更新及索引库更新
为更新索引库做准备
git tag -a '0.2.0' -m '注释'
git push --tags
更新之后验证lib、spec
pod lib lint --use-libraries --allow-warnings
pod spec lint --use-libraries --allow-warnings
验证成功,更新索引库:
pod repo push MJSpecs MJKit.podspec --use-libraries --allow-warnings
执行pod search MJKit 可查看新版本
五、第三方依赖及子库Subspecs
1、添加第三方依赖
当私有库需要依赖其它第三方才可以正常使用时,我们就需要在spec文件中开启依赖,例如下面所示代码,表明当前仓库需要依赖AFNetworking和SDWebImage,如下图:
修改后更新操作同上所述更新
2、子库Subspecs
但是这里存在一个问题,如果来了一位新的小伙伴,他所负责的部分只需要MJKit下的MJView,而MJKit下的其他文件才需要依赖第三方AFNetworking,此时他若是pod一整个MJKitt就是平白无故安装了第三方依赖库。这个时候需要用到Subspecs子库。
例如,pod search AFNetworking,其中UIKit、NSURLSession、Reachability、Security、Serialization都是AFNetworking的子库,在Podfile中将pod 'AFNetworking'改为pod 'AFNetworking/Reachability'即可单独使用这一功能。
子库格式:
s.subspec '子库名称' do |别名|
end
因为这里已经分离出子库了,所以s.source_files和s.dependency就不能按照原来的podspec文件中的使用了,需要在子库里分别指定,所以直接把原来的s.source_files和s.dependency都注释掉。写法参考如下。
# 如果MJView使用第三方依赖,就在其内部设置dependency s.subspec 'MJView' do |c| c.source_files = 'MJKit/Classes/MJView/**/*' c.dependency 'AFNetworking', '~> 3.0.0' end # 如果MJView不使用第三方依赖,在其内部不设置dependency,子库中谁使用谁设置 s.subspec 'MJView' do |c| c.source_files = 'MJKit/Classes/MJView/**/* ' end
修改后再按之前的步骤更新索引库和组件库就可以了。
如果遇到验证不通过,可以重新提交,清除之前的tag,重新提交
删除本地tag:
git tag -d test
删除远程tag:(可以在平台删除)
git push origin :refs/tags/test
更新之后查找MJKit就可以看到子库,如下图:
Pod search MJKit