简介
CocoaPods is the dependency manager for Swift and Objective-C Cocoa projects. It has over ten thousand libraries and can help you scale your projects elegantly.
CocoaPods 是 Cocoa 项目的依赖管理工具。它支持 Swift 和 Objective-C 语言,同时支持超过10000个第三方开源库。它可以帮助你管理项目,让你的项目更加优美。
每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如 Java 语言的 Maven,nodejs 的 npm。随着 iOS 开发者的增多,CocoaPods的出现是必然的。
安装CocoaPods
CocoaPods is built with Ruby and is installable with the default Ruby available on OS X. We recommend you do this.
Using the default Ruby install will require you to use sudo when installing gems. Further instructions are in the guides.
CocoaPods 管理在 Ruby 中。可以使用并推荐使用 OS X 自带的 Ruby 安装。当你使用自带的 Ruby 安装 gems 时需要使用 sudo 命令。更详细的说明可以再官方文档中查看。
简单来说,在 OS X 下安装 CocoaPods 异常的简单,只需要执行如下的命令即可:
$ sudo gem install cocoapods
$ pod setup
如果你的 gem 版本过低(系统版本低于 OS X Lion),安装可能会出现问题。可以使用如下命令查看 gem 版本。
$ gem -v
如有必要,可以使用如下命令升级。
$ sudo gem update --system
ruby 的软件源 https://rubygems.org 使用的是亚马逊的云服务,所以被墙了,还需要使用如下代码将官方的 ruby 源替换成国内淘宝的源:
$ gem sources --remove https://rubygems.org/
$ gem sources -a http://ruby.taobao.org/
$ gem sources -l
*使用CocoaPods的镜像索引
本段摘自唐巧的技术博客
还有一点需要注意,pod setup 在执行时,会输出 Setting up CocoaPods master repo,但是会等待比较久的时间。这步其实是 Cocoapods 在将它的信息下载到 ~/.cocoapods 目录下,如果你等太久,可以试着 cd 到那个目录,用 du -sh * 来查看下载进度。你也可以使用 CocoaPods 的镜像索引来提高下载速度。
所有的项目的 Podspec 文件都托管在 https://github.com/CocoaPods/Specs。第一次执行pod setup时,CocoaPods 会将这些podspec索引文件更新到本地的 ~/.cocoapods 目录下,这个索引文件比较大,有 80M 左右。所以第一次更新时非常慢,笔者就更新了将近一个小时才完成。
一个叫 akinliu 的朋友在 gitcafe 和 oschina 上建立了 CocoaPods 索引库的镜像,因为 gitcafe 和 oschina 都是国内的服务器,所以在执行索引更新操作时,会快很多。如下操作可以将 CocoaPods 设置成使用 gitcafe 镜像。
$ pod repo remove master
$ pod repo add master https://gitcafe.com/akuandev/Specs.git
$ pod repo update
将以上代码中的 https://gitcafe.com/akuandev/Specs.git 替换成 http://git.oschina.net/akuandev/Specs.git 即可使用 oschina 上的镜像。
使用CocoaPods管理项目
首先,搜索需要让 CocoaPods 管理的库,例如:
$ pod search AFNetWorking
搜索结果如下:
-> AFNetworking (2.6.0)
A delightful iOS and OS X networking framework.
pod 'AFNetworking', '~> 2.6.0'
- Homepage: https://github.com/AFNetworking/AFNetworking
- Source: https://github.com/AFNetworking/AFNetworking.git
- Versions: 2.6.0, 2.5.4, 2.5.3, 2.5.2, 2.5.1, 2.5.0, 2.4.1, 2.4.0, 2.3.1, 2.3.0, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0, 2.0.0-RC3, 2.0.0-RC2, 2.0.0-RC1, 1.3.4, 1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0, 1.0RC3, 1.0RC2, 1.0RC1, 0.10.1, 0.10.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0, 0.5.1 [master repo]
- Subspecs:
- AFNetworking/Serialization (2.6.0)
- AFNetworking/Security (2.6.0)
- AFNetworking/Reachability (2.6.0)
- AFNetworking/NSURLConnection (2.6.0)
- AFNetworking/NSURLSession (2.6.0
- AFNetworking/UIKit (2.6.0)
Search for pods (above). Then list the dependencies in a text file named Podfile in your Xcode project directory:
然后在你Xcode项目目录里名为 Podfile 的文本文件中列出每个搜索结果中的如下语句:
“pod 'AFNetworking', '~> 2.6.0'”。
Tip: CocoaPods provides a pod init command to create a Podfile with smart defaults. You should use it.
提示:你可以使用CocoaPods提供 pod init 命令去创建默认的 Podfile,效果如下:
# Uncomment this line to define a global platform for your project
# platform :ios, '6.0'
target 'App' do
end
Now you can install the dependencies in your project:
现在,你可以使用如下命令在你的安装你的依赖项了。
$ pod install
安装过程中,CocoPods 会使用递归来分析所有的需求,并且建立一个代码相关性的图,最后将 Podfile 序列化为 Podfile.lock。比如,如果两个库都需要使用 AFNetworking,CocoaPods会确定一个同时能被这两库使用的版本,然后将同一个安装版本链接到两个不同的库中。
同时,CocoaPods 会创建一个新的包含之前安装好的静态库 Xcode 项目,然后将它们链接成一个新的 libPods.a target。你原有的项目将会依赖这个新的静态库。并且会同时创建 xcworkspace 文件。
反复使用 pod install 命令,只会让 CocoaPods 重复以上步骤,重新安装这些库。所以,当你需要升级它们时,请使用以下命令:
$ pod update
Make sure to always open the Xcode workspace instead of the project file when building your project:
此后每次编译项目的时候,确保都是通过 Xcode workspace 打开项目而不是通过 project file 打开。
$ open App.xcworkspace
Now you can import your dependencies e.g.:#import <Reachability/Reachability.h>
现在,你可以导入你的依赖项例如:#import <Reachability/Reachability.h>
博客:xuyafei.cn
简书:jianshu.com/users/2555924d8c6e
微博:weibo.com/xuyafei86
Github:github.com/xiaofei86
网友评论