CocoaPods 指南

#####何为 Cocoa ?
  Cocoa 是 Mac OS X 上的五大 API 之一,是苹果的面向对象开发框架。
  其他四大 API 分别是:
  Carbon:是苹果的非面向对象的开发框架,比 Cocoa 的层次更低,比较类似于微软视窗操作系统的 Win32 API。
  POSIX:是可移植操作系统接口(Portable Operating System Interface)的缩写,定义了操作系统应该为应用程序提供的接口标准,其正式称呼为 IEEE 1003,国际标准名称为 ISO/IEC 9945。
  X11:也叫 X Window 系统,是一种位图显示的视窗系统,它是在 Unix 和 Unix-like 操作系统以及 OpenVMS 上建立图形用户界面的标准工具包和协议。
  Java:苹果提供了 Java 到 Cocoa 的绑定,但是在开发者中并未得到广泛采用.

#####何为 CocoaPods ?
  CocoaPods:Cocoa 的依赖管理器,用来管理 Xcode 工程的依赖关系。
  我们指定依赖关系时只需要在 Podfile 文件里书写即可。CocoaPods 会递归解决依赖,并且创建、关联 Xcode workspace 来建立项目。

#####CocoaPods 的原理
  CocoaPods 将所有的依赖库都放到另一个名为 Pods 的项目中,然后让主项目依赖 Pods 项目,这样,源码管理工作都从主项目移到了 Pods 项目中。Pods 项目最终会编译成一个名为 libPods.a 的文件,主项目只需要依赖这个 .a 文件即可。

#####安装 CocoaPods
  CocoaPods 使用 Ruby 建立的,所以要先安装 Ruby 环境。(淘宝 Ruby 镜像已不可用)
  RubyGems 是 Ruby 的程序包管理器。

1
2
3
4
5
$ gem sources --remove https://rubygems.org/ 【删除国外 gem 源】
$ gem sources --add https://gems.ruby-china.org/ 【添加国内 gem 源】
$ sudo gem update --system 【更新 gem 库】
$ sudo gem install cocoapods【用 gem 安装 cocoapods】
$ pod setup【更新 pod 依赖库,需时长】

  在项目根目录下用 $ pod init 生成“Podfile”的文件,然后书写依赖。书写完毕后执行:

1
$ pod install【安装 Podfile 指定的 pod 依赖库】

  Podfile文件内容的格式应该如下:

1
2
3
platform :ios, '8.0' 【注明你的开发平台以及版本,'8.0'忽略不写即为最新版本】
pod 'AFNetworking', '~> 2.5.3' 【'~> 2.5.3'为版本号,忽略不写即为最新版本】
......

  第三方库的版本号可以直接指定,比如’2.0’,也可以加修饰符,修饰符有 >、>=、<、<=、~> 五种,其中“~> a.b.c”表示使用大于等于 a.b.c 但小于a.(b+1).0 的版本,即该版本到下一个大版本之间的版本。
  注意:Podfile.lock 文件记录下了当时用的 Pods 依赖库的版本供 pod install 使用,故需要加入版本管理,以避免 Pod 依赖库版本不一致。

#####使用 CocoaPods 私有库架构 APP
  CocoaPods 在小型项目中可以直接指定 AFNetworking 等第三方类库来使用,然而从架构上讲,提供给开发人员使用的不应该直接是第三方类库,而应该是使用更简单、更切合实际业务需求的私有库。

######私有库在 Podfile 中的写法如下:

1
pod 'APod', :git => 'https://xxxx/xxx/APod.git', :tag => '0.0.1' 【私有 pod 库路径、版本指定】

######私有库的建立
1、在 Github、Coding 或 Gitlab 上建立私有 pod 库(.git)。
2、在本地创建 APod 开发工程,并关联到远程库。(最好将最终提供的类放在一个文件夹里,比如 “Lib” 文件夹)

1
2
3
$ cd 工程目录
$ git init
$ git remote add origin https://git.coding.net/xxx/APod.git

3、如果要 pod 进第三方类库,就 $ pod init 生成 Podfile 后书写依赖,然后$ pod install
4、在开发工程根目录下新建 .podspec 文件,命令如下:

1
$ pod spec create APod

5、编写 Spec 文件。需要注意:
5.1、s.version 可以先设为远端库有的 tag 号。
5.2、pod 进来的依赖要在 s.dependency 指定。
5.3、s.library(系统库)、s.framework(系统框架) 要正确配置。
5.4、s.source_files、s.public_header_files 需要正确配置。如果我们的输出文件都放在了 “Lib” 文件夹下,s.source_files = “Lib/.{h,m}”,s.public_header_files = “Lib/.h”
6、验证 Spec 文件是否合格,命令如下:

1
$ pod spec lint

如果有一些小问题不通过,可以忽略。
7、将代码推到远端库。

1
2
3
4
5
6
7
8
$ 改 s.version = '0.0.1'
$ git add -A
$ git commit -m "Release 0.0.1."

$ git pull
$ 解决冲突后继续;注意确保 s.version 是自己期望的值
$ git tag '0.0.1'
$ git push --tags

8、现在可以在其他项目中使用该 pod 了。写法见上一节。如果引用的时候用 “” 找不到头文件,就换 <> 试试。

#####CocosPods 官方帮助页
  https://guides.cocoapods.org