发布代码到CocoaPods(Trunk方式)

一、注册trunk

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

1
sudo gem install cocoapods

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

1
pod trunk  register 543069316@qq.com   'cleven'   --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上的路径

.1 podspec文件内容

WZMarqueeView .podspec的保存内容为:
[ruby]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. Pod::Spec.new do |s|  
  2.   s.name             = "WZMarqueeView"  
  3.   s.version          = "1.0.0"  
  4.   s.summary          = "A marquee view used on iOS."  
  5.   s.description      = <<-DESC  
  6.                        It is a marquee view used on iOS, which implement by Objective-C.  
  7.                        DESC  
  8.   s.homepage         = "https://github.com/wangzz/WZMarqueeView"  
  9.   # s.screenshots      = "www.example.com/screenshots_1", "www.example.com/screenshots_2"  
  10.   s.license          = 'MIT'  
  11.   s.author           = { "王中周" => "wzzvictory_tjsd@163.com" }  
  12.   s.source           = { :git => "https://github.com/wangzz/WZMarqueeView.git":tag => s.version.to_s }  
  13.   # s.social_media_url = 'https://twitter.com/NAME'  
  14.   
  15.   s.platform     = :ios'4.3'  
  16.   # s.ios.deployment_target = '5.0'  
  17.   # s.osx.deployment_target = '10.7'  
  18.   s.requires_arc = true  
  19.   
  20.   s.source_files = 'WZMarqueeView/*'  
  21.   # s.resources = 'Assets'  
  22.   
  23.   # s.ios.exclude_files = 'Classes/osx'  
  24.   # s.osx.exclude_files = 'Classes/ios'  
  25.   # s.public_header_files = 'Classes/**/*.h'  
  26.   s.frameworks = 'Foundation''CoreGraphics''UIKit'  
  27.   
  28. end  
该文件是ruby文件,里面的条目都很容易知道含义。
其中需要说明的又几个参数:
①s.license
Pods依赖库使用的license类型,大家填上自己对应的选择即可。
②s.source_files
表示源文件的路径, 注意这个路径是相对podspec文件而言的。
③s.frameworks
需要用到的frameworks,不需要加.frameworks后缀。


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命令(该命令耗时半小时左右,与网速有关),结果如下:

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值