这两天学习了如何添加自己封装的代码到Cocoapod中

以下是我这两天遇到的各种坑:

旧的方法:  http://my.oschina.net/u/727843/blog/392784

这个看看可以大概了解以前的cocoapod是怎么添加新库的.

新的方法: http://yulingtianxia.com/blog/2014/05/26/publish-your-pods-on-cocoapods-with-trunk/

上述地址是非常详细的介绍了如何添加.

现在记录需要注意的地方:

1. 必须需要翻墙,要不然连不上cocoapod 的 trunk 服务器.

2. 如果你执行了一个命令,半天没有反应,注意看看 是不是 把英文的单引号, 输入成了双引号 或者中文的双引号

3. podspec 文件中,记得所有的单双引号都是英文的,如果出现中文, 会报语法错误,并且是错误的提示会指示到下一行.我是找了半天.

4. 关于版本号, 文章(新的方法网址)中有一处是错误的,估计是trunk 变化了.

我用的podspec是:

s.name = 'RXCoreText'
s.version = '0.1' 

在给git 添加tag的方法:

git tag '0.1'
git push --tags
git push origin master

实际上git的版本是 0.1 而不是v0.1

所以用:

pod trunk push RXCoreText.podspec --verbose

会出现:

warning: Could not find remote branch v0.1 to clone.

fatal: Remote branch v0.1 not found in upstream origin

意思是发现不了版本号,

因此需要把上述git代码变成  v0.1(注意大小写):

git tag 'v0.1'
git push --tags
git push origin master

原因是在podspec文件中:

tag => "v#{s.version}"

注意前面的那一个字母的v.

这样就可以正确的 pod trunk push 了!

5.  出现这个错误:  NoMethodError - undefined method `length' for nil:NilClass

可能的原因是 podspec文件,少了一些字段:

 s.name     = "RXVerifyButton"
s.version = "0.2"
s.license = "MIT"
s.summary = "RXVerifyButton is a simple SMS count down"
s.homepage = "https://github.com/xzjxylophone/RXVerifyButton"
s.author = { 'Rush.D.Xzj' => 'xzjxylophoe@gmail.com' }

6.  提交失败:

did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it).

其中之一的原因是:s.description 的长度 小于 s.summary

7. 源码中有.a文件的:

s.vendored_libraries '*.a'

8. 需要引用系统库的:

s.libraries  'z.1', 'sqlite3'

注: 如果系统.a文件是lib开头的, 那么就直接省略掉,并且省略最后的.a

我在pod trunk的时候,  少了一个  s.summary就会出现上述错误.

如果大家发现上述的错误, 可以找一个正确的podspec,然后一个字段一个字段的对比再试一试.

目前就发现如上的几个坑. 欢迎大家各种补充.

如何添加自己封装的代码到Cocoapod的更多相关文章

  1. Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码

    *注意:全文代码可左右滑动观看 在运维开发中,使用 Python 发送邮件是一个非常常见的应用场景.今天一起来探讨一下,GitHub 的大牛门是如何使用 Python 封装发送邮件代码的. 一般发邮件 ...

  2. 微信公众平台中添加qq在线聊天代码

    微信公众平台是个不错的媒体,可以和你的小伙伴们即时交流,但你的小伙伴们是用手机上的微信,打字自然就慢了:有人说用微信网页版,那个也不习惯,再说也不一定所有人都知道网页版微信.(2014.01.22更新 ...

  3. netbeans中给jpanl添加背景图片制定代码的理解——匿名内部类继承父类

    此测试是为了仿照在netbeans中给jpanl添加背景图片的制定代码的执行过程 在JpDemo中定义了个Car类的数据类型,但在给其赋值对象时使用了匿名内部类,继承了Car类,是其子类,并重写了父类 ...

  4. 用JS添加文本框案例代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 网络传输 buf 封装 示例代码

    网络传输 buf 封装 示例代码 使用boost库 asio // BufferWrapTest.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h&quo ...

  6. 树莓派(Raspbian系统)中使用pyinstaller封装Python代码为可执行程序

    一.前言 将做好的Python软件运行在树莓派上时,不想公开源码,就需要对文件进行封装(或称打包),本文主要介绍使用pyinstaller封装Python代码为可执行程序. Python是一个脚本语言 ...

  7. css代码添加背景图片常用代码

    css代码添加背景图片常用代码 1 背景颜色 { font-size: 16px; content: ""; display: block; width: 700px; heigh ...

  8. angularjs中向html页面添加内容节点元素代码段的两种方法

    第一种方式:原生JS向html页面添加内容节点元素代码段: <!DOCTYPE html> <html> <head> <meta charset=" ...

  9. [PHP] JQuery+Layer实现添加删除自定义标签代码

    JQuery+Layer实现添加删除自定义标签代码 实现效果如下: 实现代码如下: <!doctype html> <html> <head> <meta c ...

随机推荐

  1. 这可能是php世界中最好的日志库——monolog

    由于一些历史原因,php中并没有内建的日志接口,故长期以来也没一个功能完备并且应用广泛的日志库.在我的工作生涯中,如果系统需要记录一些应用日志的话,基本上就是封装一个日志类,然后把一些要记录的字段写入 ...

  2. 读书笔记 effective c++ Item 27 尽量少使用转型(casting)

    C++设计的规则是用来保证使类型相关的错误不再可能出现.理论上来说,如果你的程序能够很干净的通过编译,它就不会尝试在任何对象上执行任何不安全或无意义的操作.这个保证很有价值,不要轻易放弃它. 不幸的是 ...

  3. CodeSmith生成实体的分页读取规则

    首先.我得向咱们博客园提个意见,能不能我写的东西就给预保存下呢?刚才我写半天,只因为这个不给力的IE浏览器死了,导致我白写了,如果这要是那个大神直接在这上面写的非常有技术含量的贴着会因此而丢失实在是有 ...

  4. 分布式键值存储系统ETCD调研

    分布式键值存储系统ETCD调研 简介 etcd是一个开源的分布式键值存储工具--为CoreOS集群提供配置服务.发现服务和协同调度.Etcd运行在集群的每个coreos节点上,可以保证coreos集群 ...

  5. poj3067树状数组求逆序数

    Japan plans to welcome the ACM ICPC World Finals and a lot of roads must be built for the venue. Jap ...

  6. Python批量修改文件名与后缀

    引言: 有时因为文件版本的更新,后缀名会发生变化,例如Word13的docx到Word16的doc,又例如我们想修改音频文件的后缀.一个一个修改后缀名往往很麻烦,于是我们便可以写一个Python的脚本 ...

  7. Android打开其它应用程序

    PackageManager pm = getPackageManager(); Intent i = pm.getLaunchIntentForPackage(packageName); start ...

  8. CentOS下的yum命令

    yum命令是rpm的一款前端工具,可以安装.更新.卸载rpm包,可以从指定服务器下下载rpm包并安装,可以自动解决依赖问题. 语法: yum [options] [command] [package ...

  9. 最新合购网源码net.asp程序 彩票合买功能采用全新内核、全新架构,更小巧、功能更强、更快、更安全稳定

    合买代购功能 可购彩种:福彩3D.排列3.重庆时时彩.天津时时彩.广东11选5.11运夺金.江苏快3.广西快3.拥有上百种玩法,更多彩种即将开发完成,更多的彩种不断开发更新中... 选号投注:建立追号 ...

  10. JAVA并发编程实战---第三章:对象的共享(2)

    线程封闭 如果仅仅在单线程内访问数据,就不需要同步,这种技术被称为线程封闭,它是实现线程安全性的最简单的方式之一.当某个对象封闭在一个线程中时,这种方法将自动实现线程安全性,即使被封闭的对象本生不是线 ...