CocoaPods的定义
当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”,这也许是比较特殊的情况。总之小编的意思就是,手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重新加入到项目中,十分麻烦。如果能有什么工具能解决这些恼人的问题,那将“善莫大焉”。所以,你需要 CocoaPods。
CocoaPods应该是iOS最常用最有名的类库管理工具了,上述两个烦人的问题,通过cocoaPods,只需要一行命令就可以完全解决,当然前提是你必须正确设置它。重要的是,绝大部分有名的开源类库,都支持CocoaPods。所以,作为iOS程序员的我们,掌握CocoaPods的使用是必不可少的基本技能了。
在Mac上默认已经为我们配置好了Ruby环境,所以Mac用户基本可以直接跳过Ruby环境配置.如果Ruby有问题请链接到这里
安装CocoaPods
在终端(Terminal)中查看Ruby镜像1
2
3
4
5
6
7
8
9
10
11
12$ gem source
//如果显示如下源那么说明镜像配置OK了可以跳过此步骤
*** CURRENT SOURCES ***
https://ruby.taobao.org/
//如果显示如下,那么就接着做吧.
*** CURRENT SOURCES ***
https://rubygems.org/
如果不是本镜像源那么需要将它改成淘宝的镜像源.否则会在install,update等情况下因为拿不到资源卡住,TC你懂得.1
2
3
4
5
6
7
8//移除原镜像源
$ gem source --remove https://rubygems.org/
//换淘宝镜像源(记得是https)
$ gem source -a https://ruby.taobao.org/
//随后查看是否配置成功,恩,结果在上面...
$ gem source
随后就是安装了,输入后等待安装完毕即可:1
2
3$ sudo gem install cocoapods (使用最新)
或
$ sudo gem install cocoapods -v 0.38/1.0.0 (指定版本)
CocoaPods的简单使用
利用CocoaPods在项目中导入AFN类库
为了确定AFNetworking是否支持CocoaPods,可以用CocoaPods的搜索功能验证一下。在终端中输入:
1 | $ pod search AFNetworking |
过几秒钟之后,你会在终端中看到关于AFNetworking类库的一些信息。比如
1 | -> AFNetworking (3.1.0) |
会返回最新的版本内容,这样就可以确定AFNetworking是支持cocoapods的.
好吧,废话少说,我们先创建这个神奇的PodFile。在terminal中进入(cd命令)你项目所在目录,然后在当前目录下,利用vim创建Podfile或者命令行pod init
(推荐),运行:1
$ vim Podfile
在pod 1.0.0以下版本,Podfile是这样的:
1
2 platform : ios, '7.1'
pod 'AFNetworking'
而在 1.0.0以上版本由于pod更新,使用旧方法的pod在安装和更新的时候会报错:
The dependency
xxis not used in any concrete target.
写法如下:
1
2
3
4
5
6
7 //XX是你的target名称
platform :ios, '8.0'
use_frameworks!
target 'XX' do
pod 'AFNetworking', '~> 2.6'
end
这部分我觉得有必要再开一片文章单独写这个…所以简单的就是这样就可以了
这两句文字的意思是,当前AFNetworking支持的iOS最高版本是iOS 8.0, 要下载的AFNetworking版本是2.6(当然也可以换成pod 'AFNetworking' 然后换行
,此时会使用最新的版本)。
然后保存退出。vim环境下,在输入上述文字之后按Esc键,输入保存退出命令::wq
在当前目录下,运行如下命令安装三方库1
$ pod install
如果没有错误的话终端会出现下列信息:1
2
3
4
5
6
7
8$ pod install
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (2.0.2)
Generating Pods project
Integrating client project
[!] From now on use `CocoaPodsDemo.xcworkspace`.
随后使用CocoaPodsDemo.xcworkspace打开项目,而不是打开.xcodeproj
这正是你刚刚运行$ pod install命令产生的新文件。除了这个文件,你会发现还多了另外一个文件“Podfile.lock”和一个文件夹“Pods”
多版本Pod共存
首先要下载个RVM(Ruby Version Manager)
,可以切换Ruby环境,安装多个版本Ruby.
因为Mac默认是配置好Ruby环境的,在终端输入gem environment
查看Ruby环境1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21RubyGems Environment:
- RUBYGEMS VERSION: 2.0.14.1
- RUBY VERSION: 2.0.0 (2015-12-16 patchlevel 648) [universal.x86_64-darwin15]
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/bin
- RUBYGEMS PLATFORMS:
- ruby
- universal-darwin-15
- GEM PATHS:
- /Library/Ruby/Gems/2.0.0 (默认本地的)
- /Users/CarlJi/.gem/ruby/2.0.0 (HomeBrew安装的)
- /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- :sources => ["https://ruby.taobao.org/"]
- REMOTE SOURCES:
- https://ruby.taobao.org/
安装RVM
1 | //可能需要翻墙 |
安装Ruby
1 | // 列出可安装的ruby版本信息 |
切换Ruby版本
1 | 上面的安装步骤完成之后,就可以通过 rvm 来切换 ruby 版本了: |
安装Pods
回到 安装CocoaPods
注意事项
如果想安装0.39等低级版本请使用Ruby2.2版本.Ruby2.1版本安装不上Pods,而2.3版本安装低版本Pods可以成功但是最后在pod install
或pod update
出现问题.
其它问题
Tips : 参数
目前我比较常用的参数是--verbose
和--no-repo-update
1
2
3pod install --verbose --no-repo-update
或
pod update --verbose --no-repo-update
verbose
: 打印信息no-repo-update
: 这是更新本地的pod仓库,和Git一样,本地有个pod repo,和github上的版本对应,如果你不想更新这个的话后面加上–no-repo-update就可以了,但是这样会有个问题,如果github上pods的一些插件像AF有新版本了,你本地搜索的af还是旧版本如果用的新版本号是无法装配的,所以每隔一段时间应执行一下pod repo update
常见问题
‘xx’头文件找不到.
target -> build settings -> User Header Search Paths 输入主目录$(SRCROOT)
或新增一个值$(PODS_ROOT)
,右边选中recursive.这样Xcode就会在项目目录中递归搜索文件.
在Github或Code4App上下载源码解码后报错缺少头文件.
1 | pod update |
之后就可以编译运行