5.发布自己的库描述文件podspec给cocoapods
同样在这个文件夹下, 终端执行: 忽视警告:--allow-warnings
pod trunk push CollectionIndexToolsLib.podspec
将你的库文件.podspec文件提交到公有的specs上面, 这一步做的操作是验证你的podspec文件是否合法+提交到specs中(等同于fork;commit;push)+将上传的podspec文件转成json格式文件),成功后会出现Congrats信息。
成功上传后等待片刻就可以用查找命令找到你的库:
pod search CollectionIndexToolsLib
6.日后维护更新开源库
如果有错误或者需要迭代版本,修改工程文件后推送到远端仓库后, 需要修改podspec中的版本号, 并重新打tag上传, 再进行新一轮的验证和发布. 如果在开发过程中发现某基础组件存在 bug 需要更新 Pod,具体操作步骤如下:
- 修改 podspec 文件中的 s.version;
- 修复 bug 并对项目打 tag,tag 名称和 s.version 一直并 push 到远程仓库。
- 验证 podspec 文件的有效性;
- 推送 podspec 文件到远程仓库;
- 执行 pod search RRCache 验证结果;
实用:组件化私有库
组件化的实用之处请参考《移动端 iOS 年终工作总结-纯干货请自备酒水》(juejin.cn/post/684490…
私有Pod库和公有Pod库的创建方式没有什么区别, 不一样的是管理他们的 spec repo 不一样.
所以我们需要自己创建一个跟CocoaPods/Specs类似的仓库来管理内部创建的Pod库的podspec文件, 供内部人员更新和依赖使用内部Pod组件库.
私有repo的构建形式有两种, 一种是私有git服务器上面创建,一种是本机创建.
本机创建请参考官方文档:Private Pods,
这里介绍的是在公司内部搭建的git服务器上面创建整个服务的方式.
1.创建一个git仓库用来做内部私有库的Spec Repo
在私有服务器一个仓库,一个用来存放所有共享库的podspec, 这里创建好之后的内部SSH协议地址是:gitee.com/WhatsXie/Li…, 花钱买git的私有仓库或者使用其他免费的第三方git服务(如Bitbucket等)创建的私有仓库给到的http/https地址也一样.终端输入命令:
pod repo add LibComponent https://gitee.com/WhatsXie/LibComponent.git
将LibComponent添加到本地repo, 添加成功后可以在/.cocoapods/repos/目录下可以看到官方的specs:master和刚刚加入的specs:LibComponent
如果有其他合作人员共同使用这个私有Spec Repo的话在他有对应Git仓库的权限的前提下执行相同的命令添加这个Spec Repo即可.
2.创建私有Pod组件库
继续创建一个私有仓库,用来建立需要共享的内部组件, 以RSGuidePageLib为例:gitee.com/WhatsXie/RS… 可以创建示例工程, 像创建公有的库一样, 填写自己的podspec文件
Pod::Spec.new do |s| s.name = 'RSGuidePageLib' s.version = '0.3.0' s.summary = 'Custom guide page package' s.description = <<-DESC Swift implementation of the guide page package, support for multiple pictures and video guide page DESC s.homepage = 'https://gitee.com/WhatsXie/RSGuidePageLib.git' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'ReverseScale@icloud.com' => 'reversescale' } s.source = { :git => 'https://gitee.com/WhatsXie/RSGuidePageLib.git', :tag => s.version.to_s } s.ios.deployment_target = '8.0' s.swift_version = '3.2' s.source_files = 'RSGuidePageLib/Classes/**/*' s.requires_arc = true
值得注意的是:podspec文件中的homepage和source不支持ssh协议地址,所以我们得放入http/https地址.
与公有库的创建方式一样, pod lib lint Category.podspec验证成功之后push到仓库, 然后打tag发布release版本.
3.然后将podspec加入私有Sepc repo中
公有库使用trunk方式将.podspec文件发布到CocoaPods/Specs, 内部的pod组件库则是添加到我们第一步创建的私有Spec repo中去, 在终端执行: --allow-warnings 忽略警告 --private 私有库
pod repo push LibComponent RSGuidePageLib.podspec
添加成功之后LibComponent中会包含RSGuidePageLib库的podspec信息, 可以前往~/.cocoapods/repos下的LibComponent文件夹中查看, 同时git服务器中的远端也更新了.
移除私有Repo
pod repo remove [name]
4.查找和使用内部组件库
执行pod search Category就能查到刚刚创建好的Category库了, 然后在想要使用此组件的工程的Podfile中加入pod 'Category', '~>1.0.1'即可使用内部组件啦!
值得注意的是:必须在Podfile前面需要添加你的私有Spec repo的git地址source, pod install时, 才能在私有repo中查找到私有库, 像这样:
# Uncomment the next line to define a global platform for your project source 'https://github.com/CocoaPods/Specs.git' source 'https://gitee.com/WhatsXie/LibComponent.git' # platform :ios, '9.0' target 'Demo' do pod 'RSGuidePageLib', '~>0.3.0’ end
经过测试, 这种方式可以把你的所有可以拆分出来的组件, 甚至是业务都来使用Pod管理, 这样达到了解耦和单项更新优化。 某些组件不影响老版本的依赖使用, 出现问题修改Podfile中的依赖版本即可随时回滚, 给开发了带来极大的便利。
参考链接:
- CocoaPods创建公有和私有Pod库方法总结(www.aliyun.com/jiaocheng/3…
- CocoaPods Guides(guides.cocoapods.org)
- Private Pods(guides.cocoapods.org/making/priv…)
- 手把手教你发布代码到CocoaPods(Trunk方式)(www.cnblogs.com/wengzilin/p…)
- 使用Cocoapods创建私有podspec(blog.wtlucky.com/blog/2015/0…)
- COCOAPODS创建私有PODS(www.cnblogs.com/tufeibo/p/5…)
- CocoaPods 组件化实践 - 私有Pod(www.jianshu.com/p/475d6b6d5…)