如何添加自己封装的代码到Cocoapod
这两天学习了如何添加自己封装的代码到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的更多相关文章
- Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码
*注意:全文代码可左右滑动观看 在运维开发中,使用 Python 发送邮件是一个非常常见的应用场景.今天一起来探讨一下,GitHub 的大牛门是如何使用 Python 封装发送邮件代码的. 一般发邮件 ...
- 微信公众平台中添加qq在线聊天代码
微信公众平台是个不错的媒体,可以和你的小伙伴们即时交流,但你的小伙伴们是用手机上的微信,打字自然就慢了:有人说用微信网页版,那个也不习惯,再说也不一定所有人都知道网页版微信.(2014.01.22更新 ...
- netbeans中给jpanl添加背景图片制定代码的理解——匿名内部类继承父类
此测试是为了仿照在netbeans中给jpanl添加背景图片的制定代码的执行过程 在JpDemo中定义了个Car类的数据类型,但在给其赋值对象时使用了匿名内部类,继承了Car类,是其子类,并重写了父类 ...
- 用JS添加文本框案例代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 网络传输 buf 封装 示例代码
网络传输 buf 封装 示例代码 使用boost库 asio // BufferWrapTest.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h&quo ...
- 树莓派(Raspbian系统)中使用pyinstaller封装Python代码为可执行程序
一.前言 将做好的Python软件运行在树莓派上时,不想公开源码,就需要对文件进行封装(或称打包),本文主要介绍使用pyinstaller封装Python代码为可执行程序. Python是一个脚本语言 ...
- css代码添加背景图片常用代码
css代码添加背景图片常用代码 1 背景颜色 { font-size: 16px; content: ""; display: block; width: 700px; heigh ...
- angularjs中向html页面添加内容节点元素代码段的两种方法
第一种方式:原生JS向html页面添加内容节点元素代码段: <!DOCTYPE html> <html> <head> <meta charset=" ...
- [PHP] JQuery+Layer实现添加删除自定义标签代码
JQuery+Layer实现添加删除自定义标签代码 实现效果如下: 实现代码如下: <!doctype html> <html> <head> <meta c ...
随机推荐
- HTML5常用标签总结
一.常用的标签 <h1>~<h6> 表示是一个标题 <p> 段落标签 <hr/> 水平线标签 <br/> 换行标签 <sub> ...
- 搭建自己的Git服务器
前言: GitHub是一个免费托管开源代码的远程仓库,使用起来即方便又安全,但在国内有时访问巨慢,原因你懂得.还有一些公司和个人视源码如生命,既不想开源代码又不想给Github交保护费.这时搭建一个自 ...
- 移动端H5开发 (滑动事件)
最近一直在做手机App H5的开发,在开发过程中,经常会遇到很多滑动事件,写个demo,分享自己的一些写法.(如写的不好,轻喷!) 直接贴代码 html css代码 <!DOCTYPE html ...
- C++随机数rand(), srand()
c++产生随机数会用到rand(), srand()函数,下面总结两个函数特性和使用. 1. rand() #include <iostream> #include <cstdlib ...
- web安全色
web安全色产生的原因 不同的平台(Mac.PC等)有不同的调色板,不同的浏览器也有自己的调色板.这就意味着对于一幅图,显示在Mac上的Web浏览器中的图像,与它在PC上相同浏览器中显示的效果可能差别 ...
- 更快的理解js中循环嵌套
[循环控制语句] break语句:终止本层循环,继续执行循环后面的语句:(当循环有多层时,break只会跳出一层循环) continue语句:跳过本次循环,继续执行下次循环: (对于for循环,con ...
- 基于express+mongodb+pug的博客系统——pug篇
很久之前就想自己搭一个博客了,最开始用hexo+github,但是换电脑后总是有些麻烦.后来使用WordPress,但是用WordPress总觉得没什么技术含量,前后端都是人家写好的,而且买的垃圾虚拟 ...
- 自己实现的一个简单的EF框架(反射实现)
我实现了一个简单的EF框架,主要用于操纵数据库.实现了对数据库的基本操纵--CRUD 这是项目结构 这是一个 core 下的 DLL 写了一个数据库工厂,用于执行sql语句.调用sql语句工厂 写了一 ...
- 获取JUnit的执行结果
junit执行之后会有一个结果展示,下面就来看一下怎么获取这些结果并将其存储为一个对象 junit代码如下: package test; import org.junit.After; import ...
- ACCESS数据库增强器需求及介绍
目前版本:ver1.0.0.2 现已支持cs文件浏览,高亮显示 针对如下图所示的access数据库,我想导出access数据库的所有或者部分表的表结构,还想对表进行封装,封装如下所示. using S ...