pod setup用于初始化本地第三方库的Spec描述文件,所有的spec文件存都存放在~/.cocoapods目录中。

pod install用来安装或删除Podfile文件声明中的第三方依赖库。

$ pod list
# 列出所有可用的第三方库
$ pod search query

搜索名称包含query的类库,query可以替换为你想搜索的名字(如json),不区分大小写。也可以使用pod search --full query命令作更仔细的搜索,该命令不但搜索类库的名称,同时还搜索类库的描述文本,所以搜索速度也相对慢一些。

pod listpod search命令只搜索存在于本地~/.cocoapods文件夹的所有第三方库,并不会连接到远程服务器。如果你要从服务器更新本地第三方库的描述文件,可以:

$ pod repo update master

创建自己项目的Podspec描述文件

CocoaPods还是一个相对年轻的项目,所有的项目的Podspec文件都托管在 https://github.com/CocoaPods/Specs 可能有一些库并未收录其中。下面我们通过为微博sso认证登录库编写Podspec文件来学习相关的概念。

初始化一个Podspec文件

$ pod spec create weibo_ios_sdk_sso-oauth

该命令将在本目录产生一个名为weibo_ios_sdk_sso-oauth.podspec的文件。用编辑器打开该文件,里面已经有非常丰富的说明文档。下面我们介绍如何声明第三方库的代码目录资源目录,还有该第三方库所依赖iOS核心框架和第三方库。

去除所有的注释,podspec文件如下所示:

Pod::Spec.new do |s|s.name     = 'ADVProgressBar's.version  = '0.0.1's.license  = 'MIT's.summary  = 'Progress Bar Design with Percentage values.'s.homepage = 'https://github.com/appdesignvault's.author   = { 'appdesignvault' => 'appdesignvault' }s.source   = { :git => 'https://github.com/appdesignvault/ADVProgressBar.git', :commit => 'f17b15c15574d6d101cd5fcfd58239e16e806647' }s.platform = :ios  s.source_files = 'ADVProgressBar/Classes/*.{h,m}'s.resources = "ADVProgressBar/Resources/*.png"s.framework = 'UIKit's.requires_arc = true
end

其中s.names.summary用来声明库的名称和一个简短的说明文档。pod search命令就是根据这两项内容作为搜索文本的。s.homepage声明库的主页,s.version库原代码的版本,s.license所采用的授权版本,s.author库的作者。

s.source声明原代码的地址,以微博sso认证登录库为例,它托管在 https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth 中,在其未尾加上.git扩展名就是库的原代码地址了,所以该行应声明为:

s.source = { :git => 'https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth.git'}

对于很多第三方库而言,在发布的时候都会打上一个tag,如版本0.0.1就会打上一个名为v0.0.1tag,但是weibo_ios_sdk_sso-oauth库还未打上所何tag,我们可以选择一个最新的commit来作为该库0.0.1版的代码。s.source最终如下:

s.source = { :git => 'https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth.git', :commit => '68defea78942ecc782ffde8f8ffa747872af226d'}

以后我们可以根据该库不同的版本创建相应的podspec文件,例如0.0.20.1.0等。

让我们在浏览器中看一下weibo_ios_sdk_sso-oauth的目录结构:

--
|
+-- demo
|
+-- src
|
+-- .gitignore
|
+-- README.md

demo目录保存一个示例项目,src才是库的原代码目录。src的目录结构如下:

-- src|+-- JSONKit|+-- SinaWeibo|+-- sinaweibo_ios_sdk.xcodeproj|+-- SinaWeibo-Prefix.pch

JSONKit目录说明这个库本身依赖于JSONKit第三方库。我们可以在podspec文件中的s.dependency声明段中声明。SinaWeibo目录才是包含所有原代码的目录,我们需要在s.source_files中声明

s.source_files = 'src/SinaWeibo/*.{h,m}'

前一部分src/SinaWeibo/是一个相对目录,目录的层级关系一定要跟代码库的保持一致。最后一部分*.{h,m}是一个类似正则表达式的字符串,表示匹配所有以.h.m为扩展名的文件。

src/SinaWeibo/目录下还有一个SinaWeibo.bundle目录,该目录存放一些资源文件(如图片等),这些文件并不需要进行编译。可以使用s.resourcs声明

s.resources = "src/SinaWeibo/SinaWeibo.bundle/**/*.png"

前一部分跟上面相同,**表示匹配所有子目录,*.png表示所有以.png为扩展名的图片文件。

通过查看代码我们知道,weibo_ios_sdk_sso-oauth还依赖一个iOS的核心库QuartzCore

s.framework = 'QuartzCore'

在前面我们已经说过,weibo_ios_sdk_sso-oauth库自身也依赖于另外一个第三方库JSONKit,声明如下:

s.dependency 'JSONKit', '~> 1.4'

这行声明与Podfile文件中的声明类似。

最终的结果如下:

Pod::Spec.new do |s|s.name         = "weibo_ios_sdk_sso-oauth"s.version      = "0.0.1"s.summary  = 'weibo.com sso oauth, 微博sso认证登录功能's.homepage     = "https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth"s.license      = 'MIT's.author       = {'mobileresearch' => 'mobileresearch'}s.source       = { :git => 'https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth.git', :commit => '68defea78942ecc782ffde8f8ffa747872af226d' }s.platform = :ioss.source_files = 'src/SinaWeibo/*.{h,m}'s.resources = "src/SinaWeibo/SinaWeibo.bundle/**/*.png"s.framework  = 'QuartzCore's.dependency 'JSONKit', '~> 1.4'
end

可以将该spec文件保存到本机的~/.cocoapods/master/目录中仅供自己使用,也可以将其提交到CocoaPods/Specs代码库中。下面我们将其保存到本机中

$ mkdir -p ~/.cocoapods/master/weibo_ios_sdk_sso-oauth/0.0.1
$ cp weibo_ios_sdk_sso-oauth.podspec ~/.cocoapods/master/weibo_ios_sdk_sso-oauth/0.0.1

是否可以通过搜索找到该库:

$ pod search weibo

同样在需要依赖于weibo_ios_sdk_sso-oauth这个库的项目,可以将下列添加到项目的Podfile文件中

pod 'weibo_ios_sdk_sso_oauth', '0.0.1'

保存文件,并用pod install安装weibo_ios_sdk_sso-oauth库。

如何编写一个CocoaPods的spec文件

CocoaPods的spec相关推荐

  1. 用CocoaPods做iOS程序的依赖管理

    CocoaPods 简介 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如 Java 语言的 Maven,nodejs 的 npm.随着 iOS 开发者的增多,业界也出现了为 iOS 程序提供 ...

  2. Setting up CocoaPods master repo 卡着不动

    转发:http://www.jianshu.com/p/88d7ada1b58b CocoaPods 的简单快速安装方法(Setting up CocoaPods master repo 卡着不动,是 ...

  3. [cocoapods]cocoapods问题解决

    错误1. While executing gem no such name 错误原因:gem 网址被挡住了. 解决办法:设置https://ruby.taobao.org/ 详情参考 http://w ...

  4. iOS架构-制作属于自己的cocoapods以及podspec文件讲解(20)

    我们在 iOS架构-cocoaPods之自制私有库及管理(17) 中已经介绍了私有cocoapods库的制作.其中已经涉及podspec文件.这里单独拉出来介绍podspec文件.使大家对podspe ...

  5. 五步让你玩转CocoaPods

    1 安装和升级 $ sudo gem install cocoapods $ pod setup 2 更换为taobao的源 $ gem sources -r https://rubygems.org ...

  6. 基于Xcode安装CocoaPods报错

    为什么80%的码农都做不了架构师?>>>    http://www.jianshu.com/p/dbd19f94295e oschina搜索功能达不到业界入门水平无奈备注下. 最近 ...

  7. 使用Cocoapods快速创建自己的podspec,让你的框架支持cocoapods,podspec

    2019独角兽企业重金招聘Python工程师标准>>> 使用Cocoapods快速创建自己的podspec,让你的框架支持cocoapods,podspec Cocoapods简介 ...

  8. CocoaPods的使用

    CocoaPods 简介 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如 Java 语言的 Maven,nodejs 的 npm.随着 iOS 开发者的增多,业界也出现了为 iOS 程序提供 ...

  9. 使用cocoapods

    使用cocoapods 0.如果发现装cocoapods时出错就更新gem到最新版本,在终端中输入:$ sudo gem update --system,注意不要把"$"复制上.等 ...

  10. CocoaPods pod install/pod update更新慢的问题

    最近使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动 原因在于当执行以上两个命令的时候会升级Co ...

最新文章

  1. 复旦 计算机 学硕 延毕,研究生招考呈现新趋势:非全日制招生遇冷 延期毕业现象越发明显...
  2. pat1011. World Cup Betting (20)
  3. mysql索引之间的区别
  4. CUDA简易安装教程
  5. 四川网络推广浅析网站标题到底能不能修改,什么时候能修改?
  6. Linux协议栈(7)——网络层实现
  7. linux中终端字符界面打印QQ,教你如何在开发驱动时在图形界面下的终端打印字符!!...
  8. socket通信简介
  9. datagridview设置为勾选才可编辑_使用lightroom前,做好这几项设置,有助于更好使用...
  10. c mysql 双主复制_mysql双主复制总结
  11. 【转载】windows跳板机配置远程桌面连接
  12. 推送通知_谷歌宣布为安卓带来声音通知功能 可监测周围声音如婴儿哭声推送通知...
  13. HDU1024 Max Sum Plus Plus【最大子段和+DP】
  14. Freeswitch mod 安装
  15. python diango 增删改查_python中关于django对数据库Mysql的增删改查操作详解
  16. 转载:CS224n笔记1 自然语言处理与深度学习简介
  17. Java并发编程:03-多线程并发下载器, 支持断点下载(手写不限速的迷你版迅雷)
  18. 反激开关电源变压器设计实例讲解(定明芳)
  19. 如何查看计算机所连接的打印机
  20. 笔记本电脑安装 OMV 关闭屏幕自动休眠的问题

热门文章

  1. HTML入门笔记(案例+截图)
  2. 咚咚咚————【封装驱动】ADS1256驱动程序,分享交流自己编写的程序。
  3. 程序员需要了解的先秦文学
  4. 太湖之光超级计算机诞生了,科技观察:神威·太湖之光超级计算机
  5. html如何设置hr 标签的线条粗细,设置hr标签的粗细
  6. 设置<hr>标签的样式
  7. Android蓝牙4.0之传输速率的提升
  8. 中国菜刀与一句话木马之间的原理分析
  9. SQP(序列二次规划中的Marotos效应)
  10. 大型即时通讯系统微信、陌陌架构分析全记录!