一、概要
iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods )可以用来统一管理这些第三方库。
如果此文章已过时,可以查看 融云 集成文档,有关于cocoaPods的集成说明。点击打开链接
二、安装
1、Ruby环境搭建
当前安装环境为MacBook Air 10.11.4。Mac OS本身自带Ruby,但还是更新一下保险。
a 查看下当前ruby版本:
打开终端输入 ruby -v(确实安装了,更新下ruby)
-
cailianfengdeMacBook-Air:~ manager$ ruby -v
-
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
-
cailianfengdeMacBook-Air:~ manager$
b 更新ruby
终端输入:gem update --system 此时可能会出现
-
ERROR: While executing gem ... (Gem::FilePermissionError) You don‘t have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
-
zijingMacBook-Pro:~ shiyunlei$ sudo gem update —system
这个是因为你没有权限去更新Ruby,这个时候你可以在终端使用:sudo gem update --system来进行升级
本次得到结果是:
-
cailianfengdeMacBook-Air:~ manager$ gem update --system
-
Latest version currently installed. Aborting.
-
cailianfengdeMacBook-Air:~ manager$
意思是已经是最高版本 如果有报错,可以尝试先更换镜像再执行Ruby更新操作。
2、下载安装CocoaPods准备(更换镜像)
安装CocoaPods时我们要访问cocoapods.org,该网站可能被墙了,这样下载安装可能会很慢,我们可以用淘宝的Ruby镜像来访问该网站,方法如下:
终端输入如下命令(把Ruby镜像指向taobao,避免被墙)
gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
gem sources -l (用来检查使用替换镜像位置成功)
得到结果:
-
cailianfengdeMacBook-Air:~ manager$ gem sources --remove https: //rubygems.org/
-
https: //rubygems.org/ removed from sources
-
cailianfengdeMacBook-Air:~ manager$ gem sources -a https: //ruby.taobao.org/
-
https: //ruby.taobao.org/ added to sources
-
cailianfengdeMacBook-Air:~ manager$ gem sources -l
-
*** CURRENT SOURCES ***
-
-
https: //ruby.taobao.org/
-
cailianfengdeMacBook-Air:~ manager$
3、下载安装CocoaPods
终端输入:sudo gem install cocoapods 备注:(苹果系统升级 OS X EL Capitan 后改为 $sudo gem install -n /usr/local/bin cocoapods 此次还是用的前面的,也没有出现问题)
-
cailianfengdeMacBook-Air:~ manager$ sudo gem install cocoapods
-
Password:
输入电脑管理员密码,回车之后就会安装各种successful,最后会得到:
-
Installing ri documentation for cocoapods-0.39.0
-
21 gems installed
这样就下载安装好了CocoaPods
执行:pod setup
会出现Setting up CocoaPods master repo,说明Cocoapods在将它的信息下载到 ~/.cocoapods里;cd到该目录里,用du -sh *命令来查看文件大小,每隔几分钟查看一次,这个目录最终大小是100多M,就是完成了 。(可能会经过漫长的等待)
4、使用search命令搜索类库名:
pod search AFNetworking(也可以pod search UI等,可以查询你想要的)
如果CocoaPods支持,将会输出搜索到的所有类库版本和信息,以及在Podfile中配置的写法,终端返回信息如下:
-
-
-> AFNetworking ( 2.3.1)
-
-
A delightful iOS and OS X networking framework.
-
-
(这个语句是需要在编辑Podfile的时候输入的命令,即是如何安装下载相关类库的指令)
-
pod ‘AFNetworking‘, ‘~> 2.3.1’
-
-
- Homepage: https: //github.com/AFNetworking/AFNetworking
-
-
- Source: https: //github.com/AFNetworking/AFNetworking.git
-
-
- Versions: 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]
-
-
- Sub specs:
-
- AFNetworking/Serialization ( 2.3.1)
-
-AFNetworking/Security ( 2.3.1)
-
- AFNetworking/Reachability ( 2.3.1)
-
-AFNetworking/ NSURLConnection (2.3.1)
-
- AFNetworking/ NSURLSession (2.3.1)
-
- AFNetworking/ UIKit (2.3.1)
-
-
-> AFNetworking+AutoRetry ( 0.0.5)
-
-
Auto Retries for AFNetworking requests
-
-
pod ‘AFNetworking+AutoRetry‘, ‘~> 0.0.5‘
-
-
- Homepage: https: //github.com/shaioz/AFNetworking-AutoRetry
-
-
- Source: https: //github.com/shaioz/AFNetworking-AutoRetry.git
-
-
- Versions: 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1 [master repo]
这说明,AFNetworking是支持CocoaPods,所以我们可以利用CocoaPods将AFNetworking导入你的项目中。
5、需要在工程中创建一个Podfile文件
使用命令:
cd /Users/cailianfeng/Desktop/TestCocoapodsDemo (进入工程目录,cd后面的是工程的路径)
touch Podfile(创建Podfile文件)
然后使用vim编辑Podfile文件,使用命令:vim Podfile 进入Podfile界面,然后键盘输入 i,进入编辑模式,输入:
-
platform :ios, '8.0'
-
target "cocospod" do
-
pod 'AFNetworking', '~> 2.3.1'
-
end
注意:cocospod 为项目名。
然后按Esc,并且输入“ :”号进入vim命令模式,然后在冒号后边输入wq,点击回车,保存并退出。
这是会看到项目中多了一个podfile文件,打开可以看见
6、执行pod install 命令
在终端当前目录下输入pod install命令 漫长等待之后,得到结果:
-
Analyzing dependencies
-
Downloading dependencies
-
Installing AFNetworking ( 2.3.1)
-
Generating Pods project
-
Integrating client project
-
-
[!] From now on use `TestCocoapodsDemo.xcworkspace`.
然后进入项目,直接用TestCocoapodsDemo.xcworkspace打开项目。这正是你刚刚运行pod install命令产生的新文件。除了这个文件,你会发现还多了另外一个文件“Podfile.lock”和一个文件夹“Pods”。并且你会发现,此时AFNetworking已经在项目的Pods文件夹中了。之后就随意使用了。
7.说明
当需要同时导入多个第三方时候 就需要修改Podfile了,就是用vim编辑的那个保存在项目根目录中的文件,修改完了Podfile文件,需要重新执行一次pod install命令。
例如:
platform :ios
pod 'JSONKit', '~> 1.4'
pod 'AFNetworking', '~> 2.0'
...
三、第二场景 如何正确编译运行一个包含CocoPods类库的项目
有时候好不容易在GitHub上找到一份代码符合自己想需求,下载下来,一编译,发现有各种各样错误。原来是缺失了各种其他第三方类库。这时如果会发现你下载的代码包含了Podfile。意味着你可以用CocoaPods很方便下载所需要的类库。
下载的项目中通常有三个跟CocosPods相关的文件(文件夹):Podfile,Podfile.lock和Pods。
打开终端,cd路径进入下载的项目所在的目录,也就是和Podfile在同一目录下(由于已经有Podfile,所以不需要再创建Podfile),输入以下命令:
pod update
过几秒(也许需要十几秒,取决于你的网络状况)之后,终端出现:
-
Analyzing dependencies
-
Fetching podspec for `XXXXXXXX` from `../`
-
Downloading dependencies
-
Installing XXXXXXXXXXXXX ( 0.1.6)
-
Generating Pods project
-
Integrating client project
-
-
[!] From now on use `XXXXXXXXXX.xcworkspace`.
这时候,打开项目文件夹看一看,会看到多了一个文件XXXXXXXXXX.xcworkspace;根据终端的信息提示,你以后就需用新产生的XXXXXXXXXX.xcworkspace来运行这个代码了。
注意,这里有个小问题,如果刚刚不是输入pod update,而是输入pod install,会发现类库导入不成功,并且终端出现下面提示:
-
[!] Required version (XXXXXXXXXX (from `../`)) not found for `XXXXXXXXXXXX`.
-
Available versions: 0.1.6
这里的意思大概是Podfile文件过期,类库有升级,但是Podfile没有更改 pod install只会按照Podfile的要求来请求类库,如果类库版本号有变化,那么将获取失败,但是pod update会更新所有的类库,获取最新版本的类库。而且你会发现,如果用了pod update,再用pod install 就成功了;其实每次直接用 pod update 也可以。或者先用 pod install,如果不行,再用pod update。