什么是CocoaPods
CocoaPods是iOS最常用最有名的类库管理工具。
如何下载和安装CocoaPods?
在安装CocoaPods之前,需要在本地安装好Ruby环境。
如果已经安装好Ruby环境,那么下载和安装CocoaPods只需要一行命令:
$ sudo gem install cocoapods
但是,由于天朝的墙。。。以上命令无效。
所以,需要使用淘宝的Ruby来访问cocoapods。如下:
$ gem sources --remove https://rubygems.org/
//以上执行完,在执行下面命令
$ gem sources -add https://ruby.taobao.org/
//如果淘宝的源不能使用,则用以下这个源
$ gem sources -add https://gems.ruby-china.org/
验证下此时的Ruby镜像是taobao,可以用一下命令查看:
$ gem sources -l
只有出现如下文字,才说明以上命令成功
*** CURRENT SOURCES ***
https://ruby.taobao.org/
安装CocoaPods:
$ sudo gem install cocoapods
等上十几秒钟,CocoaPods就在本地下载并安装完了。
执行pod install 命令
出现Setting up CocoaPods master repo,说明Cocoapods在将它的信息下载到 ~/.cocoapods里;
cd 到该目录里,用du -sh *命令来查看文件大小,每隔几分钟查看一次会发现大小不断改变,这里需要耐心等待下。大概需要等到735M才算完成(我也不知道这为什么这么大)。
使用CocoaPods
使用CocoaPods
和安装它一样简单,也是一两行命令即可搞定。
使用CocoaPods
的两种情况:
情况一:使用CocoaPods,在项目中导入AFNetworking类库
导入AFNetworking
类库之前,可以使用以下命令先验证下AFNetworking
是否支持CocoaPods
:
$pod search AFNetworking
如果支持,可以在终端看到如下的信息(截取了一部分):
-> AFNetworking (3.1.0)
A delightful iOS and OS X networking framework.
pod 'AFNetworking', '~> 3.1.0'
- Homepage: https://github.com/AFNetworking/AFNetworking
- Source: https://github.com/AFNetworking/AFNetworking.git
- Versions: 3.1.0, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 3.0.0-beta.3,
3.0.0-beta.2, 3.0.0-beta.1, 2.6.3, 2.6.2, 2.6.1, 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 (3.1.0)
- AFNetworking/Security (3.1.0)
- AFNetworking/Reachability (3.1.0)
- AFNetworking/NSURLSession (3.1.0)
- AFNetworking/UIKit (3.1.0)
具体的步骤可以如下:
1、创建一个项目,这里我取名为CocoaPodsDemo。
2、在终端中进入本项目所在目录,创建名为PodFile
的文件
$ touch PodFile
3、打开PodFile文件,在PodFile文件中输入支持的iOS最低版本,要导入的类库AFNetworking以及版本,如果AFNetworking不填版本,则默认导入最新的版本(如果该开源库支持的话)。保存并关闭PodFile文件。需要注意的几点:platform那一行,ios三个字母都要小写,而且与前面的冒号之间不能有间隔,后面的版本号也可以不写,但是有些开源库对版本是有要求的,比如要在6.0以上才能运行,遇到这样的开源库就需要写上版本号。
platform :ios, '7.0'
pod "AFNetworking", '~> 3.0'
4、这个时候,就可以真正使用CocoaPods
导入AFNetworking
了。
$ pod install
如果无效(一般有梯子的都有效),使用:
$ pod install --verbose --no-repo-update
由于手贱,更新了CocoaPods版本,查看版本可以使用命令:
$ pod --version
1.0.1
所以执行$ pod install
报错了:
[!] The dependency `AFNetworking (~> 3.0)` is not used in any concrete target.
随便Google
了下
(http://stackoverflow.com/questions/37464977/the-dependency-afnetworking-2-5-is-not-used-in-any-concrete-target)
发现可以这样修改:
platform :ios, '7.0'
target 'CocoaPodsDemo' do
pod "AFNetworking", '~> 3.0'
end
居然就成功了,估计是1.X版本之后的什么新的玩法吧。终端显示:
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (3.1.0)
Generating Pods project
Integrating client project
[!] Please close any current Xcode sessions and use `CocoaPodsDemo.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total
pod installed.
它提示我们使用CocoaPodsDemo.xcworkspace
打开项目。我们在项目中,也可以发现多了这个文件:
通过CocoaPodsDemo.xcworkspace
打开工程,发现AFNetworking
已经被导入了:
这时就可以通过这样的方式导入AFNetworking
的头文件了:
#import <AFNetworking.h>
下次如果是更新现有的库或者导入之前未导入过的库,则可以直接执行update操作,而不必进行install操作:
$ pod update
如果无效,使用:
pod update --verbose --no-repo-update
情况二:如何正确编译运行一个包含CocoPods类库的项目
很多时候,作为新手iOS开发者的我们,好不容易在GitHub上找到一份代码符合我们的要求,兴高采烈地下载下来,然后编译,然后傻眼了,特么编译不过,一看,发现是缺少了其他第三方类库。还可以发现,这个项目包含了PodFile。所以这一切,意味着,我们可以使用CocoPods来使这个项目添加需要的类库:
$ pod update
具体再自己找例子试下。