当自己的库已经上传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 - 图文讲解的更多相关文章

  1. 二十、【.Net开源】EFW框架核心类库之WebService服务

    回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.1:http://pan.baidu.com/s/1qWJjo3U EFW框架实例源代码下载:http://pan.baid ...

  2. 十八、【开源】EnterpriseFrameWork框架核心类库之Winform控制器

    回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U EFW框架中的WinContro ...

  3. 十九、【.Net开源】EFW框架核心类库之WCF控制器

    回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.1:http://pan.baidu.com/s/1qWJjo3U EFW框架实例源代码下载:http://pan.baid ...

  4. 如何快速简单上传类库到CocoaPods - 图文攻略步骤

    当自己的库已经上传GitHub后,那么如何快速简单的开源自己的库呢? 这里就是介绍如何将自己的类库上传到pods管理库,以便开源所有人都能方便使用. 准备前提: - 项目已上传到GitHub (注意, ...

  5. 跨界!Omi 发布多端统一框架 Omip 打通小程序与 Web 腾讯开源 2月28日

    https://mp.weixin.qq.com/s/z5qm-2bHk_BCJAwaodrMIg 跨界!Omi 发布多端统一框架 Omip 打通小程序与 Web 腾讯开源 2月28日

  6. 十六、【适合中小企业的.Net轻量级开源框架】EnterpriseFrameWork框架核心类库之单点登录SSO

    回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U 单点登录(Single Sign ...

  7. 【开源】OSharp框架解说系列(1):总体设计及系列导航

    系列文章导航 [开源]OSharp框架解说系列(1):总体设计 [开源]OSharp框架解说系列(2.1):EasyUI的后台界面搭建及极致重构 [开源]OSharp框架解说系列(2.2):EasyU ...

  8. 【开源】EFW框架系列文章索引

    开源轻量级.Net框架EnterpriseFrameWork详解 ——自己动手写框架 ——适合中小企业的开发框架 ——Ajax+JqueryEasyUI+NotNetBar+MVC+WebServic ...

  9. 十七、EnterpriseFrameWork框架核心类库之Web控制器

    回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U EFW框架中的WebContro ...

随机推荐

  1. Javascript时间以及格式化秒

    var now = new Date(); timer = $.timer(timeout, function () {     var sec_num = Math.ceil((now.getTim ...

  2. 终端控制类getopt isatty select ttyname

    getopt(分析命令行参数) 相关函数 表头文件 #include<unistd.h> 定义函数 int getopt(int argc,char * const argv[ ],con ...

  3. OpenCV学习(31) 基于defects的简单手势

    前几年在做毕业设计时候曾用opencv1.0中defects做过简单的手势识别,这几天看OpenCV2.46中的轮廓函数,发现和以前差别挺大,函数调用完全不一样,重新实现了简单手势的代码. 1.首先用 ...

  4. OpenCV学习(29) 凸包(convexhull)

    在opencv中,通过函数convexHulll能很容易的得到一系列点的凸包,比如由点组成的轮廓,通过convexHull函数,我们就能得到轮廓的凸包.下面的图就是一些点集的凸包. 求凸包的代码如下: ...

  5. 我所遭遇过的游戏中间件--FlashOcx

    使用Flash做游戏界面的另一种方式是通过Abode提供flash.ocx处理Flash界面.将Flash图像通过GDI绘制出来后,再将图像数据拷贝到一个D3D的纹理结构中,最后由引擎的D3D接口进行 ...

  6. 记录cocos2d-html5与cocosd-x jsb中遇到的坑

    这两天开始用coco2d-html5写游戏, 但最终是发布到手机上, 写的js代码是跑在jsb上的. 在此记录下遇到的坑. 注:cocos2d-x 简称 cx,  cocos2d-html5 简称ch ...

  7. App优化 Systrace

    简介 trace [tres] vt.跟踪,追踪; 追溯,探索; 探索; 查找; n.痕迹; 痕迹,踪迹; 微量,极少量; 1 1   1 trace [tres] vt.跟踪,追踪; 追溯,探索; ...

  8. Linux经常使用命令(三) - pwd

    Linux中用 pwd 命令来查看"当前工作文件夹"的完整路径. 简单得说,每当你在终端进行操作时.你都会有一个当前工作文件夹. 在不太确定当前位置时.就会使用pwd来判定当前文件 ...

  9. angularJs的一次性数据绑定:双冒号::

    angularJs 中双冒号 ::来实现一次性数据绑定. 原文: https://blog.csdn.net/qianxing111/article/details/79971544 -------- ...

  10. js 特效

    栏目1 栏目1->菜单1 栏目1->菜单2 栏目1->菜单3 栏目1->菜单4 栏目2 栏目2->菜单1 栏目2->菜单2 栏目2->菜单3 栏目2-> ...