iOS组件化(二)----- 组件的更新

组件化系列传送门

iOS组件化(一)----- 创建私有组件库(在码云上操作)
iOS组件化(二)----- 组件的更新
iOS组件化(三)----- 加载图片等资源文件


在之前的组件里面添加新的代码,例如在基础的组件里面添加一个NewView目录

iOS组件化(二)----- 组件的更新_第1张图片
NewView目录

添加完成后我们需要更新到远程仓库

一、更新远程仓库

1. 打开你的HFMyTest.podspec文件,将原本的版本号改为0.2.0,与下面提交的tag保持一致
iOS组件化(二)----- 组件的更新_第2张图片
HFMyTest.podspec
2. 代码更新
cd /Users/hf/MyTest/HFMyTest

到本地仓库的位置

git add .
git commit -m '更新描述'
git pull  //可能在更新之前需要先拉下代码
git push origin master
iOS组件化(二)----- 组件的更新_第3张图片
commit更新
3. 版本更新

版本更新 这一步非常重要,为更新索引库做准备

git tag -a '0.2.0' -m '注释'
git push --tags
iOS组件化(二)----- 组件的更新_第4张图片
提交tag

查看远程仓库,标签数已经有2个了,点进去就可以看到0.2.0

iOS组件化(二)----- 组件的更新_第5张图片
码云上HFMyTest

二、修改描述文件并更新索引库

1. 验证远程lib
pod lib lint --use-libraries --allow-warnings
2. 验证远程spec
pod spec lint --use-libraries --allow-warnings
3. 更新索引库
pod repo push MyTestSpec HFMyTest.podspec --use-libraries --allow-warnings
iOS组件化(二)----- 组件的更新_第6张图片
更新索引库

如果在HFMyTest中的pod中查看最新的代码请

cd /Users/hf/MyTest/HFMyTest/Example
pod install

接下来就可以看到更新的最新代码


iOS组件化(二)----- 组件的更新_第7张图片
HFMyTest

三、第三方依赖

当我们的私有库需要依赖其它第三方才可以正常使用时,我们就需要在spec文件中开启依赖,例如下面所示代码,表明当前仓库需要依赖AFNetworkingSDWebImage

iOS组件化(二)----- 组件的更新_第8张图片
HFMyTest.podspec

s.dependency 'AFNetworking', '~> 3.0.0'
s.dependency 'SDWebImage', '~> 4.3.0'

修改后更新操作同上所述。

四、子库Subspecs

但是这里存在一个问题,如果来了一位新的小伙伴,他所负责的部分只需要HFMyTest下的NewView,而HFMyTest下的MyView才需要依赖AFNetworking,此时他若是pod一整个HFMyTest岂不是平白无故安装了第三方依赖库,那应该怎么做呢?

什么是Subspecs?这里我们可以搜索一下AFNetworking

pod search AFNetworking
iOS组件化(二)----- 组件的更新_第9张图片
AFNetworking

可以看到,如果我们只需要用到AFNetworking中的Reachability功能,那么并不需要将整个AFNetworking都下载下来,在Podfile中将pod 'AFNetworking'改为pod 'AFNetworking/Reachability'即可单独使用这一功能。

那接下来我们就来看看怎么描述一个子库吧
子库格式

s.subspec '子库名称' do |别名|
end

因为这里已经分离出子库了,所以s.source_filess.dependency就不能这么使用了,需要我们在子库里分别指定,所以我们直接把原来的s.source_filess.dependency都注释掉。写法参考如下

iOS组件化(二)----- 组件的更新_第10张图片
HFMyTest.podspec

#s.source_files = 'HFMyTest/Classes/**/*'
#s.dependency 'AFNetworking', '~> 3.0.0'
s.subspec 'MyView' do |c|
  c.source_files = 'HFMyTest/Classes/MyView/**/*'
  c.dependency 'AFNetworking', '~> 3.0.0'
end

s.subspec 'NewView' do |c|
  c.source_files = 'HFMyTest/Classes/NewView/**/*'
end

修改后再按之前的步骤更新索引库和组件库就可以了。
在成功更新组件库和索引库后我们再来搜索一下试试

pod search HFMyTest
iOS组件化(二)----- 组件的更新_第11张图片
HFMyTest

现在就可以爱装哪个就装哪个了,在Podfile中指定要安装的子库就行了
例如新建一个项目MyTest,在其Podfile修改如下

pod 'HFMyTest/NewView'
iOS组件化(二)----- 组件的更新_第12张图片
MyTest

你可能感兴趣的:(iOS组件化(二)----- 组件的更新)