如何发布开源自己的框架或类库到CocoaPods - 图文讲解
当自己的库已经上传GitHub后,那么如何快速简单的开源自己的库呢?
这里就是介绍如何将自己的类库上传到pods管理库,以便开源所有人都能方便使用。
准备前提:
- 项目已上传到GitHub (注意,这里不唯一,其他开源平台网站也可)。
- 这里以我之前的一个项目作为示例。(SwiftPopMenu)
步骤如下:
- 创建.podspec
- 项目打 tag
- 验证有效性
- 注册CocoaPods
- 发布
================================== start =================================
1、生成.podspec文件,这个是pod的描述文件,很重要
//SwiftPopMenu 是你的框架名称
pod spec create SwiftPopMenu
执行后会看到当前目录下会出现一个SwiftPopMenu.podspec文件,用编辑器打开(可用vim,我用的Sublime Text,比较好用一点),会看到很多注释,根据自己的项目修改编辑,得到类似下面的内容:
Pod::Spec.new do |s| s.name = "SwiftPopMenu"
s.version = "1.0.0"
s.summary = "easy use SwiftPopMenu on iOS"
s.description = "easy use SwiftPopMenu on iOS,use by readme" s.homepage = "https://github.com/TangledHusky/SwiftPopMenu" s.license = { :type => "MIT", :file => "LICENSE" }
s.author = { "TangledHusky" => "your email,eg:xxx@qq.com" }
s.platform = :ios, "8.0"
s.source = { :git => "https://github.com/TangledHusky/SwiftPopMenu.git", :tag => "v#{s.version}" }
s.source_files = "SwiftPopMenu/*.{swift}" end
这里的选项是删除过后的,原文是有很多注释的,为了可读性,可以删除掉。
如果有依赖型或资源文件,要加上这些:
s.dependency "MBProgressHUD"
s.resources = "YJProgressHUDK/*.bundle"
这里我遇到几个坑:
(1)s.summary和s.description 内容不能一样,否则会warning,导致后面验证不通过。
(2)s.source的tag不用改,保持tag => "v#{s.version}" 即可。
(3)s.source_files的路径是里库文件夹下的所有文件,所以要定位到那一层路径,这里我用的swift,所以后缀是.{swift},如果是oc,这里是.{h,m}
2、因为cocoapods是依赖tag版本的,所以必须打tag。
PS:以后如果有新版本需要再次更新的话,只需要把你的项目打一个tag,然后修改.podspec文件中的版本接着提交到cocoapods官方就可以了,提交命令请看下面
cd进入本地项目目录,进去后输入如下:
git tag 'v1.0.0' git push --tags
注意这里版本号加“v”,不然后面会有坑。
3、接着 把修改好的文件push到github上去
(如果用SourceTree等可视化工具,可忽略命令,直接在工具上push执行)
git add SwiftPopMenu.podspec git commit -am "add SwiftPopMenu.podspec file” git push -u origin master
4、但是!! 以上做完之后,使用pod search 是搜不到你的库的,因为这只是你私有本地库。
要想使用Trunk服务,首先你需要注册自己的电脑。
已注册或不确定是否注册:
查看自己有没有注册
pod trunk me
注册:
只要指明你的邮箱地址(spec文件中的)和名称即可。
pod trunk register 123456@qq.com 'github账户名' --description='macbook air'
然后顺利的话你会收到一份邮件,需要点击验证。
然后,再次使用
pod trunk me
查看自己的注册信息
5、上面的工作完成之后,我们就可以开始 trunk push 了提交我们的podspec文件。
pod trunk push 命令会首先验证你本地的podspec文件(是否有错误),之后会上传spec文件到trunk,最后会将你上传的podspec文件转换为需要的json文件
第一步验证podspec文件:
pod spec lint SwiftPopMenu.podspec
如果验证成功的话会显示

当然,这一步很容易会error,但是,都会列出你哪里的问题,照着改就是了,最常见的可能就是:
warning: Could not find remote branch v1.0.0 to clone. fatal: Remote branch v1.0.0 not found in upstream origin
这里就是因为之前git tag 没加v,修改并重新提交下再试一下。
当然,有时间有这样一种情况:会报warning错误,如果是不影响功能或偷懒不想改,可以绕过:
pod spec lint --allow-warnings SwiftPopMenu.podspec
这样就可以通过验证了。
最后,输入下面命令进行提交发布:
pod trunk push SwiftPopMenu.podspec
如果上面验证用了 --allow-warnings ,这里也需要这样做:
pod trunk push --allow-warnings SwiftPopMenu.podspec
如果发布成功,就会看到:

注意:
执行上面的push操作,就相当于你把你的源代码提交给CocoaPods团队审核了,一般需要一到两个工作日可以审核结束。
下面就是安心等待了。。。(网上的说法)
6、如果收到了cocoapods官方发过来的审核通过邮件后(不知道为啥,我没收到邮件
如何发布开源自己的框架或类库到CocoaPods - 图文讲解的更多相关文章
- 二十、【.Net开源】EFW框架核心类库之WebService服务
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.1:http://pan.baidu.com/s/1qWJjo3U EFW框架实例源代码下载:http://pan.baid ...
- 十八、【开源】EnterpriseFrameWork框架核心类库之Winform控制器
回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U EFW框架中的WinContro ...
- 十九、【.Net开源】EFW框架核心类库之WCF控制器
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.1:http://pan.baidu.com/s/1qWJjo3U EFW框架实例源代码下载:http://pan.baid ...
- 如何快速简单上传类库到CocoaPods - 图文攻略步骤
当自己的库已经上传GitHub后,那么如何快速简单的开源自己的库呢? 这里就是介绍如何将自己的类库上传到pods管理库,以便开源所有人都能方便使用. 准备前提: - 项目已上传到GitHub (注意, ...
- 跨界!Omi 发布多端统一框架 Omip 打通小程序与 Web 腾讯开源 2月28日
https://mp.weixin.qq.com/s/z5qm-2bHk_BCJAwaodrMIg 跨界!Omi 发布多端统一框架 Omip 打通小程序与 Web 腾讯开源 2月28日
- 十六、【适合中小企业的.Net轻量级开源框架】EnterpriseFrameWork框架核心类库之单点登录SSO
回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U 单点登录(Single Sign ...
- 【开源】OSharp框架解说系列(1):总体设计及系列导航
系列文章导航 [开源]OSharp框架解说系列(1):总体设计 [开源]OSharp框架解说系列(2.1):EasyUI的后台界面搭建及极致重构 [开源]OSharp框架解说系列(2.2):EasyU ...
- 【开源】EFW框架系列文章索引
开源轻量级.Net框架EnterpriseFrameWork详解 ——自己动手写框架 ——适合中小企业的开发框架 ——Ajax+JqueryEasyUI+NotNetBar+MVC+WebServic ...
- 十七、EnterpriseFrameWork框架核心类库之Web控制器
回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U EFW框架中的WebContro ...
随机推荐
- Android之RAS加密算法测试
import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair; import java ...
- RecyclerView 缓存机制详解
一 前言 RecyclerView据官方的介绍,该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView.GridView.RecyclerView可以用来代替传 ...
- [PHP] ubuntu16.04配置Lamp环境(搭建linux+apache+mysql+php7环境)
reference : http://blog.csdn.net/Abyss_sliver/article/details/77621404 好久没有在Linux环境下进行开发了,比较常用的还是win ...
- iOS:UIImageView图像视图控件
UIImageView:图像视图控件: 它是UIView的子类,因此也是视图控件,可以用来显示图像.因为它具有帧动画属性和操作方法,因此可以用来制作动画,其实动画就是很短的时间内,执行显示连续的 ...
- 判断大小端的方法(java和c++)
首先我们给出大小端的定义: 小端:较高的有效字节存放在较高的的存储器地址,较低的有效字节存放在较低的存储器地址. 大端:较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址. 将 ...
- DB-library 常用函数
以下转自:http://blog.csdn.net/lwbeyond/article/details/5620801 1. Dbcmd和dbfcmd 函数原形: Dbcmd(DBPROCESS *pr ...
- python内置函数和魔法函数
内置方法:Python中声明每一个类系统都会加上一些默认内置方法,提供给系统调用该类的对象时使用.比如需要实例化一个对象时,需要调用该类的init方法:使用print去打印一个类时,其实调用的是str ...
- Java中浮点类型的精度问题 double float
要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法与浮点数的结构组成.因为机器只认识01,你想表示小数,你要机器认识小数点这个东西,必须采用某种方法.比如,简单点的,float四个字 ...
- android.net.Uri 简介 API
android.net.Uri 简介 public abstract class android.net.Uri extends Object implements Parcelable, Compa ...
- IOS 实现界面本地化(国际化)
在制作应用程序的时候,可以使用本地化功能,将应用程序的内容翻译成多种语言,在不同的区域显示不同的语言.下面就通过简体中文本地化设置来讲解一下本地化的简单使用. 一.让应用程序支持中文语言环境 选择需要 ...