文档章节

iOS:手把手教你发布代码到CocoaPods(Trunk方式)

采飞扬
 采飞扬
发布于 2016/05/18 10:04
字数 2200
阅读 16
收藏 0

Change Log:

2015.08.20 - 添加podspec文件更新方法

2015.08.19 - 首次发布

概述

关于CocoaPods的介绍不在本文的主题范围内,如果你是iOS开发者却不知道CocoaPods,那可能要面壁30秒了。直奔主题,这篇文章主要介绍如果把你的代码发布到CocoaPods代码库中,让别人可以使用“pod search yourOpenProject”命令查找到你的代码。

在2014年5月20日以前,发布代码到CocoaPods可以使用这篇文章。但时过境迁,出于安全性等方面的考虑,CocoaPods团队放弃了该方式,使用本文要说的trunk方式,用流程图表示如下:(图片来自CocoaPod官方blog

下面请跟着我的步伐一步一步往下走,我会告诉你其中的一些坑以及如何应对这些坑:

一、注册trunk

在注册trunk之前,我们需要确认当前的CocoaPods版本是否足够新。trunk需要pod在0.33及以上版本,如果你不满足要求,打开Terminal使用ruby的gem命令更新pod:

1

sudo gem install cocoapods

更新结束后,我们开始注册trunk:

1

pod trunk register zilin_weng@163 .com 'weng1250'  --verbose

邮箱以及用户名请对号入座。用户名我使用的是Github上的用户名。--verbose参数是为了便于输出注册过程中的调试信息。执行上面的语句后,你的邮箱将会受到一封带有验证链接的邮件,如果没有请去垃圾箱找找,有可能被屏蔽了。点击邮件的链接就完成了trunk注册流程。使用下面的命令可以向trunk服务器查询自己的注册信息:

1

pod trunk me

输出如下信息就表示你注册成功,可以进行下面的流程:

二、配置PodSpec

在这一部分中我们需要做两件事:1、为你的代码添加podspec描述文件;2、将podspec文件通过trunk推送给CocoaPods服务器

2.1 添加podspec描述文件

这一步与更换trunk方式前的操作完全一样。什么是podspec描述文件呢?简单地讲就是让CocoaPods搜索引擎知道你的代码的作者、版本号、源代码地址、依赖库等信息的文件。任何支持CocoaPods的开源代码都必须有podspec文件。CocoaPods在github中用一个repo来管理所有支持CocoaPods的开源代码:https://github.com/CocoaPods/Specs

那如何编写podspec文件呢?官方提供了一个模板并附有非常详细的注释说明。关于podspec文件的编写本文不打算详细讲。强烈建议你看这篇文章的第三节部分,第四第五节不必看因为已经过时了。

建议直接拿一些成熟的开源库的podspec改就行,生成的模板里有很多冗余的属性。

这里要注意一点,有时你写的podspec文件在后面push的时候会提示"The `source_files` pattern did not match any file."错误,但是能用pod lib lint命令做本地校验时又是OK的。为什么呢?上述错误的意思是pod在网络上根据你指定的路径找不到相关文件。这时候你要核对网上git仓库的路径与source_files(其他_files字段同理)要对应。*_files字段指的是网络git上的路径

 

2.2 通过trunk推送podspec文件

现在我们已经有了自己的podspec文件,但是在推送podspec文件之前你需要确认以下几点:

1、确保你的源码已经push到Github上。如果还没push源代码,可以用Terminal cd到本地源代码的根目录,执行:

1

2

3

git add -A

git commit -m "first commit for version 1.0.0"

git push origin master

当然,你也可以使用SourceTree等GUI形式的Git客户端进行代码的推送操作。

2、确保你所push的代码已经打上"version tag",也就是给源代码打上版本号标签:

1

2

git tag '1.0.0' 

git push --tags 

只有确保了以上两点,CocoaPods才能更准确地找到你的repo。

现在我们开始通过trunk上传你的podspec文件。先cd到podspec文件所在目录,执行:

1

pod trunk push WZLBadge.podspec

文件名自行对号入座。上面的代码做了三件事:(可以对着文章开头的流程图看)

1、验证你的podspec文件是否合法。在trunk方式之前我们一般用“pod lib lint”命令进行验证。

2、上传podspec文件到trunk服务器(其实最终也会自动添加到https://github.com/CocoaPods/Specs中,只是使用trunk方式省去了以前先fork在pull request的繁琐操作)

3、将你上传的podspec文件转成json格式文件

执行上面的push操作,就相当于你把你的源代码提交给CocoaPods团队审核了,一般需要一到两个工作日可以审核结束。这种心情有点像提交App给Apple审核,哈哈。

*更正:现在CocoaPods审核只需要几秒钟或者几分钟就可以完成了。

 

三、更新本地pod依赖

既然代码提交已经结束,那为什么还要这一步呢?因为你不知道什么时候会审核通过。你可能会说,使用"pod search"命令查一查不就知道了吗?但遗憾的是如果这一步不执行,那在你的电脑上永远不知道代码何时审核通过。举个例子,我在提交了我的一份开源代码WZLBadge(截至发稿前已有300+的Star)到pod后的第三天使用search命令仍旧查不到:

这个速度让我觉得不大对劲。于是我使用

1

pod setup

命令更新本地pod依赖库后再执行pod search命令(该命令耗时半小时左右,与网速有关),结果如下:

这证明,代码其实早已经审核通过了!

 

因此,在这一环节中你需要这么做:

在trunk push后,先用"pod search"查找一下你的代码,有结果的话就欢天喜地;没有的话执行"pod setup"进行本地依赖库更新,再search。


 强势插入:

如果不出意外,大多数同学在执行上述命令后会卡在“Setting up CocoaPods master repo”这一句中。我的经验是一个字:等!不要关闭Terminal,大概半小时到一小时左右就会完成,提示“Setup completed”。(第一次会比较慢,第一次以后只需要几秒钟即可完成)为什么会卡这么久呢?

pod setup其实在做这么一件事:Cocoapods在将https://github.com/CocoaPods/Specs的信息下载到你电脑的~/.cocoapods目录下并进行文件比对,总数据大小大约在100MB左右,再加上服务器在国外,因此速度会比较慢。在执行过程中你也可以新开一个Terminal窗口,cd到~/.cocoapods目录,用du -sh *来查看下载进度。

当然,如果你有强迫症等不了这么久,那也是有解决方法的。你可以参考唐巧的这篇文章的“使用CocoaPods的镜像索引”部分,将CocoaPods的镜像地址替换成国内的oschina等服务器地址,速度或许会有提高。但我个人认为没必要,我在没梯子的环境下耗时半小时左右,多点耐心。(第一次会比较慢,第一次以后只需要几秒钟即可完成)

 


 

**podspec文件更新方法

有时你可能会遇到这种情况:执行pod trunk push操作后发现podspec文件的某个地方写错了,想更新一下。对于这种情况,我们可能会先尝试着在把podspec文件push一次。但是如果你的代码版本号没变(podspec里的version自然也没变)就会提示push失败,即使你更改了podspec的其他地方,pod也会认为这两个文件是同一个。 我目前为止找不到trunk的相关update接口,所以只能顺水推舟,更新源代码版本号(如:1.1.1->1.1.2),重新push version tag,然后再执行pod trunk push操作。

 

写在最后

trunk的方式的确比以前的fork->pull方式省事很多,但目前网上关于trunk提交CocoaPods代码的资料不多,所以才有了这篇文章。希望这篇文章能各位有一些帮助。

 

=======================================================

原创文章,转载请注明 编程小翁@博客园 ,邮件zilin_weng@163.com,欢迎各位与我在C/C++/Objective-C/机器视觉等领域展开交流!

欢迎跳转我的GitHub主页,关注我的开源代码,Fellow me,也欢迎你Star/Fork/Watch我的开源项目。

=======================================================

本文转载自:http://www.cnblogs.com/wengzilin/p/4742530.html

共有 人打赏支持
采飞扬
粉丝 18
博文 36
码字总数 7858
作品 3
东城
架构师
使用CocoaPods管理第三方库

DEC 2ND, 2012 前言 每种语言发展到一个阶段,就会出现相应的依赖管理工具, 或者是中央代码仓库。比如 Java: maven,Ivy Ruby: gems Python: pip, easy_install Nodejs: npm 随着iOS开发者的...

泊竹
2013/12/08
0
0
如何在CocoaPods中添加自定义的库

CocoaPods命令介绍 在 上一篇文章 中,已经介绍过CocoaPods的几条基本命令。 pod setup 用于初始化本地第三方库的Spec描述文件,所有的spec文件存都存放在 ~/.cocoapods 目录中。 pod instal...

泊竹
2013/12/09
0
0
IOS之cocoaPods安装--管理第三方库。2017 以及遇到的坑

安装步骤 首先,检查你的ruby源: gem sources -l 默认情况是: * CURRENT SOURCES * https://rubygems.org/ 重要的位置: 这个源路径国内不能使用,之前是使用淘宝的镜像https://ruby.taob...

Chason-洪
2017/10/19
0
0
使用CocoaPods来做iOS程序的包依赖管理

前言 每种语言发展到一个阶段,就会出现相应的依赖管理工具, 或者是中央代码仓库。比如 Java: maven,Ivy Ruby: gems Python: pip, easy_install Nodejs: npm 随着iOS开发者的增多,业界也出...

龙虾达人
2013/02/25
0
0
iOS 最新版的 CocoaPods 安装流程

首先打开终端:(Launchpad-其他-终端)在终端中输入如下指令: 1.移除现有Ruby默认源 $gem sources --remove https://rubygems.org/ 2.使用新的源 $gem sources -a https://ruby.taobao.or...

琳小兮
2016/06/17
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

RabbitMQ在CentOS环境安装

1.废话不多说准备一台虚拟机,系统为centos,我这里使用的系统版本如下图所示:

凌晨一点
55分钟前
0
0
线程池相关

在java.util.concurrent包下,提供了一系列与线程池相关的类。 使用线程池的好处 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗; 提高响应速度。当任务到达时,任务...

edwardGe
57分钟前
0
0
学习大数据这三个关键技术是一定要掌握!

大数据时代全面来临,大数据、人工智能等技术引领科技创新潮流,获得国家政策大力支持,前景广阔。学习大数据技术的人自然是络绎不绝, 学习大数据虽然是一个趋势,但也要注意大数据培训课程...

董黎明
今天
0
0
jetbrains 上传代码到github

设置中找github 获取token 验证是否成功 测试git 生成key,一路回车即可 ssh-keygen -t rsa -C “youremail@example.com” 打开pub复制key,需要再次输入一次密码 验证是否成功,输入yes即可...

阿豪boy
今天
0
0
分布式服务框架(拾遗)

前言 现在的大部分工程都已经是基于分布式架构来处理。所以这里对分布式框架做一个简单的总结 常用的RPC框架 RPC框架原理 RPC(Remote Procedure Call,远程过程调用)一般用来实现部署在不同...

kukudeku
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部