CocoaPods 详解之----更新篇
CocoaPods 大概是 2011 年出现的开源组件管理工具(目前已支持 Objective-C 和 Swift),近年来普及率越来越高,几乎已是所有 Cocoa 开源项目的标配。另外,很多大点的团队会用 CocoaPods 拆分工程,实现项目插件化。
博主曾在 2014 年写过 CocoaPods 详解 系列文章:CocoaPods详解之——使用篇、CocoaPods详解之——进阶篇、CocoaPods详解之——制作篇,简单介绍了从使用到亲手制作 CocoaPods 开源组件的过程。
然而随着时间的推移,CocoaPods 有些使用方式也发生了变化,比如组件提交方式等。本文将从 Trunk 和私有仓库两个方面介绍自己对 CocoaPods 的新认识。
一、Trunk 方式提交开源组件
从 CocoaPods 0.33 版本开始,CocoaPods 将组件的提交从 Pull requests 变成了自动化的 Trunk 方式。Trunk 提交方式有以下步骤:
1、向 Trunk 注册自己的电脑
首次使用 Trunk 时,需要注册自己的电脑:
1 |
|
执行命令以后,上述邮箱会收到一封验证邮件,按照邮件说明打开制定的链接,注册流程就完成了。
注册流程完成后,可以使用命令:
1 |
|
可以检验注册结果,如果输出:
1 |
|
则说明注册成功。
2、提交组件
准备好 podspec 文件后,首先要检查其合法性:
1 |
|
解决完错误和警告后,会显示以下内容:
1 |
|
这就说明验证可以提交了。
执行提交命令:
1 |
|
如果顺利的话,会输出以下内容:
1 |
|
仅需要这一条命令,开源组件就被推送到 CocoaPods 主仓库中了。可以执行以下命令验证下:
1 |
|
输出为:
1 |
|
说明组件 WZMarqueeView 已经成功从 1.0.0 升级成了 2.0.0 版本。
3、其它说明
- 权限声明
在执行下述命令时:
1 |
|
提示了以下错误:
1 |
|
原来,Trunk 要求只有组件所有者和开发者才能更新已有组件,而上例的组件 WZMarqueeView 是 2014 年通过 Pull requests 方式上传到 CocoaPods 主仓库的,并没有声明过所有权。
随后,到 CocoaPods 指定的网页:Claim your Pod上填写对应信息后,按照提示执行命令:
1 |
|
看到执行结果:
1 |
|
组件的所有权已经变成了本人,此时再去执行 trunk push 命令时就正常了。
- 为组件添加其它所有者
一个组件可以通过以下命令,添加多个所有者(以邮箱为标识):
1 |
|
执行成功后,kyle@cocoapods.org 也变成了 WZMarqueeView 的所有者。
- Pull requests 和 Trunk 对比
对于开发者来说,Pull requests 的操作过程十分繁琐,需要开源组件制作者先 fork 一份主仓库,然后将组件提交到 fork 后的仓库,再 Pull requests 给 CocoaPods 主仓库的维护者;
对 CocoaPods 主仓库的维护者来说,需要手工一个个处理主仓库的合并操作,通常第二天甚至需要更长时间 requests 才能被处理;
而 Trunk 方式,开发者只需要一条命令就能将组件上传到主仓库,并且 Trunk 方式是自动化的,几乎不再需要主仓库的维护者做任何工作,实时性更好。
另外,Trunk 增加了组件所有者的概念,非所有者无法提交组件的更新,这在一定程度上提高了 CocoaPods 的安全性。
二、创建私有 CocoaPods 仓库
目前所有支持 CocoaPods 的开源组件,都存储在 Github 上公共的 CocoaPods Specs 仓库中,这种方式有以下缺点:
官方仓库过大,里面的绝大多数组件都不是我们需要的,你一定忘不了首次执行 pod install 操作时那无尽的等待;
不能实现私有化,作为一个相当好用的组件管理工具,很多团队都使用 CocoaPods 实现庞大项目的组件化,都放在公共仓库肯定不行。
这时就需要创建一个和 CocoaPods Specs 类似的私有组件存储仓库。私有仓库可以存放在自家公司的 Git 服务器上,也可以放在各大支持私有仓库的 Git 平台上,下面以支持免费私有仓库的 coding.net为例说明 CocoaPods 私有仓库的创建过程。
1、创建coding.net私有仓库
按照 coding.net 官网提示创建一个私有仓库即可。
2、本地初始化组件仓库
执行以下命令:
1 |
|
3、向仓库中添加组件
将事先准备好的组件添加到仓库中,组件可以存放在本地,也可以放在自家或网上的代码托管平台。执行以下命令:
1 |
|
执行成功以后,会有以下输出:
1 |
|
至此,本地和代码托管平台上的私有仓库 FGSpecs 中就都已经添加了私有组件 FGMarqueeView。
4、使用私有仓库中的组件
Podfile 文件中默认情况下已经隐式使用 source 声明了 CocoaPods 的官方仓库。但使用私有组件,需要使用 source 关键字鲜显式声明组件所在仓库:
1 |
|
其中,SBJson 组件是官方仓库的,FGMarqueeView 组件属于我们刚创建的私有仓库。
需要注意的是:
- 官方仓库的显式声明
尽管官方仓库会被隐式声明,如果同时使用了官方仓库和私有仓库,就需要同时声明二者。
- 仓库声明顺序性
先声明的仓库具有优先权。当先后引用的两个仓库中都包含同一个组件时,会使用先引用仓库中的,哪怕后引用的仓库中版本号更高。
5、直接使用私有组件
如果不想创建私有仓库,也可以在 Podfile 里直接引用私有组件(组件可以是本地的,也可以是托管在自家公司服务器或网上的代码托管平台上的),引用的同时还可以制定具体的 commit、branch 或者 tag,比如:
1 |
|
这种方式引用的组件在执行完 pod install 以后,会被添加在 Development Pods 目录下,而通过私有仓库或共有仓库方式引用的组件则会被添加在 Pods 目录下。
三、cocoapods 版本管理
cocoapods 升级新版本后可能会遇到坑,因此就有了降级的需求。
- 查看当前版本
1 |
|
- 卸载当前版本
1 |
|
- 安装指定版本
1 |
|
四、参考文档
转自:http://foggry.com/blog/2016/03/23/cocoapods-xiang-jie-zhi-geng-xin-pian/
CocoaPods 详解之----更新篇的更多相关文章
- CocoaPods详解之(三)----制作篇
CocoaPods详解之----制作篇 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/20067595 转载请注明出处 ...
- CocoaPods详解之(一)----使用篇
CocoaPods详解之----使用篇 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/18737437 一.什么是Coc ...
- CocoaPods详解之(二)----进阶篇
CocoaPods详解之----进阶篇 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/19178709 转载请注明出处 ...
- [HMLY]4.CocoaPods详解----制作
作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/20067595 转载请注明出处 学会使用别人的pods依赖库后,你一 ...
- [HMLY]1.CocoaPods详解----使用
作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/18737437 转载请注明出处 一.什么是cocoaPods 1.为 ...
- CocoaPods详解之----制作篇【转】
Cocoapods是非常好用的一个iOS依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自己的项目中的公共组件交由它去管理.Cocoapods的介绍及优点本文就不在赘述,我开始 ...
- Cocoa包管理器之CocoaPods详解
CocoaPods在Cocoa开发日常工作中经常用到的包管理器,即依赖管理工具.有的项目也有用Carthage的,Carthage是一个比较新的依赖管理工具,是使用Swift语言开发的.Carthag ...
- CocoaPods详解之----使用篇
http://blog.csdn.net/meegomeego/article/details/24005567 作者:wangzz 原文地址:http://blog.csdn.net/wzzvict ...
- iOS:CocoaPods详解
原文地址:http://blog.csdn.net/wzzvictory/article/details/18737437 一.什么是CocoaPods 1.为什么需要CocoaPods 在进行iOS ...
随机推荐
- 『题解』洛谷P3376 【模板】网络最大流
Problem Portal Portal1:Luogu Description 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. Input 第一行包含四个正整数\(N,M,S,T\),分 ...
- Linux 部署Nginx反向代理服务 使用openssl自生成证书并配置https
1.安装Nginx编译所依赖的包 正常centos中可以使用yum安装一下依赖包: yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel ...
- Material for oauth 2
oauth 2 in 8 steps: https://knpuniversity.com/screencast/oauth Live demo of oauth 2 (with server im ...
- nginx 根据不同url转发请求对应tomcat容器
根据前端请求的url,nginx转发到指定的tomcat容器 原理如图: 现在我们有2个tomcat,一个tomcat的端口为9001,另一个tomcat的端口为9002 1.找到nginx的配置文件 ...
- MySQL InnoDB MVCC
MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 My ...
- Download-学习资源下载
小白求关爱:链接为本人工作中学习所碰到的,如有不对之处,请及时联系加以改正,后续仍会追加新链接地址并及时更新旧链接地址 Jdk历史版本 https://www.oracle.com/technetwo ...
- [LC] 108题 将有序数组转换为二叉搜索树 (建树)
①题目 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10,- ...
- nyoj 599-奋斗的小蜗牛 (double ceil(); (temp - 1) / 5)
599-奋斗的小蜗牛 内存限制:64MB 时间限制:1000ms 特判: No 通过数:0 提交数:96 难度:1 题目描述: 传说中能站在金字塔顶的只有两种动物,一种是鹰,一种是蜗牛.一只小蜗牛听了 ...
- 【Mac】【SoupUI】许可证损坏问题
近期参考 https://www.cnblogs.com/shuaijie/articles/5913750.html#top 安装破解SoupUI 破解方法如下: 截至2014-10-9:SoapU ...
- ubuntu server 1604 搭建FTP服务器
1.查看是否安装 ftp服务器vsftpd -v 2.安装ftp服务器sudo apt-get install vsftpd 3.如果安装失败或者配置出现问题,可以卸载 ftp服务器sudo apt- ...