首页

时间和精神的房子
壹只iOS程序员的修行世界,欢迎来访

如果文章对您有所帮助
将是我最大的荣幸

CocoaPods的安装与使用(一)

简介

CocoaPods 是 Cocoa 项目的依赖管理工具。它支持 Swift 和 Objective-C 语言,同时支持超过10000个第三方开源库。它可以帮助你管理项目,让你的项目更加优美。

每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如 Java 语言的 Maven,nodejs 的 npm。随着 iOS 开发者的增多,CocoaPods的出现是必然的。

安装CocoaPods

CocoaPods 项目管理在 Ruby 中。可以使用 OS X 自带的 Ruby 安装。所以在 OS X 下安装 CocoaPods 十分简单,只需要分别执行如下的命令即可:

$ sudo gem install cocoapods
$ pod setup

安装的问题

替换 ruby 软件源

ruby 的软件源 https://rubygems.org 使用的是亚马逊的云服务,所以被墙了。你需要将官方的 ruby 源替换成 ruby china 的源:

$ gem sources --remove https://rubygems.org/
$ gem sources --add https://gems.ruby-china.org/

替换后可以用如下命令查看是否替换成功。

$ gem sources -l

更新 gem

假如安装出现问题,大部分情况下是你的 gem 版本过低造成的。比如这种错误信息 “Unable to resolve dependencies: cocoapods requires cocoapods-core…”。你可以使用如下命令查看 gem 版本。

$ gem -v

如有必要,可以使用如下命令升级。

$ sudo gem update --system

Operation not permitted - /usr/bin/xcodeproj

出现这种错误时需要执行如下命令来安装。

$ sudo gem install -n /usr/local/bin cocoapods

*使用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

升级与安装执行的命令是一样的。

$ sudo gem install cocoapods

如果你需要升级或安装预览版,可以在后边加上“--pre”。

$ sudo gem install cocoapods --pre

使用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

现在,你可以导入你的依赖项例如:#import <Reachability/Reachability.h>

参考资料

关注作者

分享本文

目录