iOS组件库创建

Posted Belinda_sl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于iOS组件库创建的主要内容,如果未能解决你的问题,请参考以下文章

iOS组件化之代码库跟索引库的创建

iOS代码组件化(利用CocoaPods创建私有库)

iOS代码组件化(利用CocoaPods创建私有库)

是否有角度组件或代码来创建 Material.io 抽屉?

iOS组件化:创建本地私有库

Reactreact概述组件事件