Cocopods高级教程

cocopods安装

  本教程默认Mac已经安装Ruby环境,如果没有安装Ruby,请自行搜索。 
  如果电脑没有安装cocopods,打开终端输入以下命令:

$ sudo gem install cocoapods

 如果由于网络原因无法下载cocopods,那么我建议你使用淘宝镜像下载,具体的方式请自行搜索,并非本文重点。
如果已经安装,那么我建议你将cocopods更新到最新稳定版本,命令与上面一样。

使用cocopods拉取远依赖库

  在拉取之前你必须确定你已经安装了cocopods。步骤如下

  • 创建一个新的ios项目
  • 打开电脑终端窗口 $ cd 进入你的项目根目录
  • 使用$ pod init 命令创建一个Podfile文件
  • 第一行你应当定义你支持的平台和版本,比如
    platform :ios, '9.0'
  • 创建目标应用部分,使用 target '$TARGET_NAME' do 开头和 end结束,例如

    1
    2
    3
    target 'MyApp' do
    pod 'ObjectiveSugar'
    end
  • 然后保存的你Podfile文件,执行 $ pod install 命令,将会自动创建新文件

  • 找到文件中的 '$TARGET_NAME'.xcworkspace,点击打开,这个文件将是你以后使用的项目打开文件。

Pod命令简介

  许多开始使用cocopods的新手似乎都不大能分清pod installpod update的作用

  • pod install:第一次给项目安装cocopods时使用,在已经有cocopods环境的项目中添加或者删除依赖库时使用。
  • pod update:主要是用来升级依赖库的版本,其中加上依赖库名字,比如 pod update PODNAME将只更新这个依赖库的版本。
    如果装载新的依赖库速度过慢,可以使用命令pod install --verbose --no-repo-update来替代pod install

Podfile文件

  支持一个target的podfile可能是这样子的:

1
2
3
target 'MyApp' do
pod 'AFNetworking', '~> 3.0'
 end

  如果你有多个target,不同的target使用不同的库,互不影响,那么可能是这样子的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
abstract_target 'Shows' do
pod 'ShowsKit'
pod 'Fabric'

# Has its own copy of ShowsKit + ShowWebAuth
target 'ShowsiOS' do
pod 'ShowWebAuth'
end

# Has its own copy of ShowsKit + ShowTVAuth
target 'ShowsTV' do
pod 'ShowTVAuth'
end
en

依赖库的版本

  • 如果你希望使用库最新的版本就那么只要:
    pod 'SSZipArchive'

  • 如果你希望使用库的某个特定版本:
    pod 'Objection', '0.9'

  • 使用操作符来定义

  • ‘> 0.1’ 任何大于0.1的版本
  • ‘>= 0.1’ 任何大于或者等于0.1的版本
  • ‘< 0.1’ 任何小于0.1的版本
  • ‘<= 0.1’ 任何小于或者等于0.1的版本
  • ‘~> 0.1.2’ 大于等于0.1.2版本,小于0.2版本
  • ‘~> 0.1’ 大于等于0.1版本,小于1.0版本

库的路径

  • 依赖于本地库:

    1
    pod 'AFNetworking', :path => '~/Documents/AFNetworking'
  • 使用github上项目的master主干仓库:

    1
    pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git'
  • 使用github上项目分支仓库:

1
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :branch => 'dev'
  • 使用特定的tag版本仓库:
1
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0'
  • 使用某次提交的仓库:
    1
    pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :commit => '082f8319af'

创建自己的cocopods依赖库

  我推荐你用官方自动生成的模板来构建自己的库项目,避免自己动手去构建的错误,比如语法错误,文件位置错误。

  • 选择好文件位置,创建自己的库项目

    1
    pod lib create MyLib
  • 期间会有些选择,根据自己的需求去打命令选择。主要有

    • Objective-C or Swift
    • Making a Demo Application
    • Choosing a Test Framework
    • View-based Testing

最后的目录如下:

MyLib
├── .travis.yml
├── _Pods.xcproject
├── Example
│ ├── MyLib
│ ├── MyLib.xcodeproj
│ ├── MyLib.xcworkspace
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Pods
│ └── Tests
├── LICENSE
├── MyLib.podspec
├── Pod
│ ├── Assets
│ └── Classes
│ └── RemoveMe.[swift/m]
└── README.md


  这个文件中自动包含了license , readme.md , pod描述文件。你所要做的事情就是将你的代码嵌入进去,并修改 podspec中的summary描述文字,<GITHUB NAME>为你的github账户名,可选的修改和添加其他字段属性。在修改spec文件的时候要注意语法错误往往都是双引号或者单引号引起的,有的文本编辑器默认更改了了spec文件的双引号和单引号类型,你可以更正过来,一般单引号都是使用键盘上面数字1左边的的键位上的单引号,双引号可以复制其他正确引用的单引号。
  Pod文件是你存放自己的库的地方,Example是库的使用示例代码,你可以向使用者展示下如何使用你的库。
  注意,如果你的库是由swift语言编写,那么你需要将需要暴露给使用者的类,接口,和方法等等声明为public,否则可能会出现访问不到该类的情况。

  • 将自己的库代码嵌入项目
    在xcode编辑界面中,将自己的库代码放入 Development Pods文件夹,然后执行pod update,注意库的权限一定要是public,然后项目重新编译一下。在需要使用到库的类中导入库 import ANNetworking ,我建议你在自己的Example中检查下库的可用性。
  • 使用git工具将项目push到自己的github仓库中
  • realse版本发布的准备
    当你即将发布自己的库到cocopods的时候,你需要先使用命令pod lib lint来检查下pod描述文件是否有错误,确认无误,给你的项目打上版本tag,并且push,命令如下
$ git add -A && git commit -m "Release 0.0.1."

$ git tag '0.0.1'

$ git push --tags
  • 部署自己的库
    在部署前先要进行错误检查,使用命令pod lib lintpod spec lint,二者的区别在于,前者只会进行本地校验,后者进行github仓库和tag校验。
  • 将pod描述文件推送到pod服务器,网络畅通情况下,一到两分钟就能看到成功的结果,命令如下:
1
  pod trunk push NAME.podspec

完成后搜索下自己传上去的库,pod search NAME,最好能自己试用一下。