组件化系列传送门
iOS组件化(一)----- 创建私有组件库(在码云上操作)
iOS组件化(二)----- 组件的更新
iOS组件化(三)----- 加载图片等资源文件
在之前的组件里面添加新的代码,例如在基础的组件里面添加一个NewView
目录
添加完成后我们需要更新到远程仓库
一、更新远程仓库
1. 打开你的HFMyTest.podspec
文件,将原本的版本号改为0.2.0
,与下面提交的tag保持一致
HFMyTest.podspec
2. 代码更新
cd /Users/hf/MyTest/HFMyTest
到本地仓库的位置
git add .
git commit -m '更新描述'
git pull //可能在更新之前需要先拉下代码
git push origin master
commit更新
3. 版本更新
版本更新 这一步非常重要,为更新索引库做准备
git tag -a '0.2.0' -m '注释'
git push --tags
提交tag
查看远程仓库,标签数已经有2个了,点进去就可以看到0.2.0
二、修改描述文件并更新索引库
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
更新索引库
如果在HFMyTest
中的pod
中查看最新的代码请
cd /Users/hf/MyTest/HFMyTest/Example
pod install
接下来就可以看到更新的最新代码
HFMyTest
三、第三方依赖
当我们的私有库需要依赖其它第三方才可以正常使用时,我们就需要在spec文件中开启依赖,例如下面所示代码,表明当前仓库需要依赖AFNetworking
和SDWebImage
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
AFNetworking
可以看到,如果我们只需要用到AFNetworking
中的Reachability
功能,那么并不需要将整个AFNetworking
都下载下来,在Podfile
中将pod 'AFNetworking'
改为pod 'AFNetworking/Reachability'
即可单独使用这一功能。
那接下来我们就来看看怎么描述一个子库吧
子库格式
s.subspec '子库名称' do |别名|
end
因为这里已经分离出子库了,所以s.source_files
和s.dependency
就不能这么使用了,需要我们在子库里分别指定,所以我们直接把原来的s.source_files
和s.dependency
都注释掉。写法参考如下
#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
HFMyTest
现在就可以爱装哪个就装哪个了,在Podfile中指定要安装的子库就行了
例如新建一个项目MyTest
,在其Podfile
修改如下
pod 'HFMyTest/NewView'
MyTest
网友评论