2015年以前上传到cocoapods的方式相较于现在比较麻烦,现在用不上在此也就不提了。现在上传到cocoapods只需要简单的几步即可。

1.首先你需要有一个自我感觉写的差不多的库。

2.注册trunk

$sudo gem install cocoapods
pod trunk register dantesx2012@gmail.com 'dsxniubility'  --verbose

第一个指令是更新一下cocoapods不管你现在是什么版本,这个指令也都没有坏处,他会升级到目前最高的正式版。

第二个指令建议邮箱名和用户名与自己的github同步,之后去自己的邮箱中找到该邮件点击验证的链接完成注册。

如果你不是在董铂然博客园看到本文,请点击查看原文

完成之后再次进入终端查看自己注册信息

pod trunk me

如果成功的话可以看到如下图所示

3.配置自己的podspec文件

这是最重要的一步,配置里面的信息必须按照要求填写,否则会各种让你不通过。

这里有两种方案,一是自动生成,二是找一个现成的podspec文件改改。

这里建议第二种,因为第一种自动生成的东西里面会有很多用不到。第二种可以去github上找一些优秀代码把podspec打开看看再修改,这里我直接把我的贴出来了,免得去找了。建议使用sublime打开或vim修改,因为用普通的txt打开的话会出现诸如中英文单引号等一些列问题十分蛋疼。

Pod::Spec.new do |s|
s.name = 'SXWaveAnimate'
s.version = '1.3.6'
s.license = 'MIT'
s.summary = 'An Animate Water view on iOS.'
s.homepage = 'https://github.com/dsxNiubility/SXWaveAnimate'
s.authors = { '董尚先' => 'dantesx2012@gmail.com' }
s.source = { :git => 'https://github.com/dsxNiubility/SXWaveAnimate.git', :tag => s.version.to_s }
s.requires_arc = true
s.ios.deployment_target = '8.0'
s.source_files = 'SXWaveAnimate/*.{h,m}'
s.resources = 'SXWaveAnimate/images/*.{png,xib}'
end

这里的每一行感觉都是顾名思义很容易理解,需要注意的是最下方的source_files 和 resources 一定要分清,需要编译器编译的放在前者,资源文件放在后者。我之前坑了一次,把xib放在前者了,后面的步骤一路畅通,但是到最后pod install自己代码下来就会遇到编译不通过的问题。

如果你需要直接把自己demo程序中Images.xcassets里的图片取出来当资源文件可以这么写

s.resources = ['SXWaveAnimate/*.xib', 'SXWaveAnimateDemo/*.xcassets']

4.上传代码

把自己的项目提一次commit到github上。

再打一下tag

git tag '1.0.0'
git push --tags

tag和commit是两个不同的机制,就算commit全被reset了通过tag也可以找回代码。

5.提交自己的podspec文件

找到podspec的根目录下,再执行下面的指令

pod trunk push SXWaveAnimate.podspec

这一行代码做了很多之前步骤中的工作。包括检测podspec是否合法,转成json格式传输,上传到trunk服务器,再转到github的cocoapods库。

执行之后通过的话显示是这个样子的

失败的话可能会出现这样

或者是这样

失败的原因基本都是podspec文件里面的格式错误或者路径写错了,这里不要急慢慢来,没人限制你说只给你一次机会。

出现上面成功的情况就是交给cocoapods团队审核了,这个过程是很快的,从几小时到一个两个工作日不等。建议今天成功了明天下午再来看看,用不着一直刷新。

6.随便看看

执行搜索操作就能看到自己写的库摆在那里了

如果隔了很久还搜是不到自己的库,建议把仓库更新一下,再搜。

如果感觉自己的pod速度太慢,可以更换淘宝的ruby源,具体操作可见唐巧大神的一片博客:http://www.devtang.com/blog/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/。

只要你为cocoapods提供了代码就能在你github的右边有个cocoaPods/Specs

并且你回头看你的代码,代码所使用的语言占比也会出现Ruby

我传的库是一个关于灌水动画的,有兴许的可以去看看或者pod install一下。https://github.com/dsxNiubility/SXWaveAnimate

SXWaveAnimate

7.更新库

更新基本没有什么特殊操作,重复第4,5两步,记得把podspec和tag 都加1点,如果tag不变也是不允许的。

更新库的话速度很快,我记得当时好像10分钟就能刷出来了,如果你发现你pod search 时自己是1.3.6版本 但是pod install后仍是1.3.5版本,并且在podfile文件中你也并没有指定固定的版本号,那就把podfile.lock删除就好了。

如果你不是在董铂然博客园看到本文,请点击查看原文

将自己写的库上传到cocoapods(2015)的更多相关文章

  1. github + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法

    一.上传写好的库到github(我这里使用SourceTree客户端) 1.在github上创建一个仓库 2.将仓库拉倒本地 复制仓库地址 将刚才复制的地址粘贴到这里 3.上传项目到github 将写 ...

  2. Maven系列(二) -- 将开源库上传到maven仓库私服

    前言 之前简单说了下Maven的搭建,现在跟大家说一下如何将自己的aar传到我们新搭建的maven仓库里面,接下来我们就从最基本的新建一个library开始讲述整个流程,话不多说,让我们把愉快的开始吧 ...

  3. Android如何制作自己的依赖库上传至github供别人下载使用

    Android如何制作自己的依赖库上传至github供别人下载使用 https://blog.csdn.net/xuchao_blog/article/details/62893851

  4. Requests库上传文件时UnicodeDecodeError: 'ascii' codec can't decode byte错误解析

    在使用Request上传文件的时候碰到如下错误提示: 2013-12-20 20:51:09,235 __main__ ERROR 'ascii' codec can't decode byte 0x ...

  5. SharePoint 服务器端对象模型操作文档库(上传/授权/查看权限)

    简介:上传文档到文档库,并对项目级授权,查看项目级权限方法         //在列表根目录下创建文件夹 public static string CreatFolderToSPDocLib(stri ...

  6. C语言 HTTP上传文件-利用libcurl库上传文件

    原文  http://justwinit.cn/post/7626/ 通常情况下,一般很少使用C语言来直接上传文件,但是遇到使用C语言编程实现文件上传时,该怎么做呢? 借助开源的libcurl库,我们 ...

  7. python利用socket写一个文件上传

    1.先将一张图片拖入‘文件上传’的目录下,利用socket把这张图片写到叫‘yuan’的文件中 2.代码: #模拟服务端 import subprocess import os import sock ...

  8. 写一个限制上传文件大小和格式的jQuery插件

    在客户端上传文件,通常需要限制文件的尺寸和格式,最常用的做法是使用某款插件,一些成熟的插件的确界面好看,且功能强大,但美中不足的是:有时候会碰到浏览器兼容问题.本篇就来写一个"原生态&quo ...

  9. 如何将自己写的代码上传到github上

    忙活了一下午终于成功把代码上传到github上. 接下来就是我上传代码的步骤: ①首先注册github账号,登录,创建新仓库 ,点击+,点击new repository 得到如下页面,填写仓库名,自己 ...

随机推荐

  1. 【Android】Android Studio 进行代码混淆,打包release APK

    整了一天,感觉坑挺多. 1. 选择如图中的选项Android Studio进行签名打包: 2. 填写APP对应的信息:(最好用个文本记下来放在项目中同步给Team) - Key store path: ...

  2. android中AVD的使用

    AVD路径设置 前面提到,不管用Eclipse还是从命令行创建Android Emulator时,相应的文件是被放置到 “C:\Documents and Settings\Administrator ...

  3. ROS 新手常见问题汇总

    版权声明:本文为博主原创文章,转载请标明出处: http://www.cnblogs.com/liu-fa/p/5772469.html 该博文致力于汇总ROS常见问题及解答,让更多的人少走弯路,避免 ...

  4. jQuery Ajax实现下拉框无刷新联动

    HTML代码: @{ Layout = null; } @using DAL; @using System.Data; @{ AreaDal areaDal = new AreaDal(); stri ...

  5. 第三讲:WCF介绍(3)

    代码 https://yunpan.cn/cPns5DkGnRGNs   密码:3913   前面我们通过一个小的例子,大概了解的WCF. 这里我们补充下  EndPoint 配置  A,B,C  中 ...

  6. 孙鑫MFC学习笔记16:异步套接字

    16 1.事件对象 2.CreateEvent创建事件对象 3.SetEvent设置事件对象为通知状态 4.ResetEvent设置事件对象为非通知状态 5.InitializeCriticalSec ...

  7. Python Sqlite3以字典形式返回查询结果

    sqlite3本身并没有像pymysql一样原生提供字典形式的游标. cursor = conn.cursor(pymysql.cursors.DictCursor) 但官方文档里已经有预留了相应的实 ...

  8. 《构建高性能web站点》随笔 无处不在的性能问题

    前言– 追寻大牛的足迹,无处不在的“性能”问题. 最近在读郭欣大牛的<构建高性能Web站点>,读完收益颇多.作者从HTTP.多级缓存.服务器并发策略.数据库.负载均衡.分布式文件系统多个方 ...

  9. 设计模式/原则篇- Unit of Work

    概念 Unit of Work 即工作单元. 用来维护一组受业务影响的对象列表,将多个操作放在一个单元中,把操作原子化,通过事务统一完成一次提交,如果某个过程出现异常,就将所有修改进行回滚,保证数据的 ...

  10. socket.io,环境搭建 & Hello world

    原文:http://www.cnblogs.com/xiezhengcai/p/3955827.html socket.io 一个与服务器实时通信的工具,它与原生的webSocket相比,具有更可靠. ...