本文共 4908 字,大约阅读时间需要 16 分钟。
一、什么是CocoaPods
CocoaPods是iOS项目的依赖管理工具,该项目源码在Github上管理。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和第三方开源库的时间。
在使用CocoaPods之前,开发项目需要用到第三方开源库的时候,我们需要 1.把开源库的源代码复制到项目中 2.添加一些依赖框架和动态库 3.设置-ObjC,-fno-objc-arc等参数 4.管理他们的更新 在使用CocoaPods后,我们只需要把用到的开源库放到一个名为Podfile的文件中,然后执行pod install.Cocoapods就会自动将这些第三方开源库的源码下载下来,并且为我们的工程设置好响应的系统依赖和编译参数。二、CocoaPods的原理
CocoaPods的原理是将所有的依赖库都放到另一个名为Pods的项目中,然后让主项目依赖Pods项目,这样,源码管理工作都从主项目移到了Pods项目中。Pods项目最终会编译成一个名为libPods.a的文件,主项目只需要依赖这个.a文件即可。
三、CocoaPods的安装
CocoaPods可以方便地通过Mac自带的RubyGems安装。
打开Terminal,然后键入以下命令: sudo gem install cocoa pods输入本机密码
执行完这句如果报告以下错误:
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why: Unable to download data from - Errno::ETIMEDOUT: Operation timed out - connect(2) () ERROR: Possible alternatives: cocoa pods这是因为ruby的软件源rubygems.org因为使用亚马逊的云服务,被我天朝屏蔽了,需要更新一下ruby的源,过程如下:
gem sources -l (查看当前ruby的源)gem sources --remove gem sources -a gem sources -l
如果gem太老,可以尝试用如下命令升级gem sudo gem update --system
升级成功后会提示: RubyGems system software updated然后重新执行安装下载命令
sudo gem install cocoa pods输入本机密码,耐心等待几分钟
这时候应该没什么问题了
四、Cocoapods的使用
进入工程所在的目录(工程根目录)
执行命令vim Podfile
这句是说新建一个名为Podfile的文件(不能写成别的名字,也可以自己在工程根目录里面直接新建)
键盘输入 i,进入编辑模式,输入
platform :ios, '7.0' pod 'MBProgressHUD', '~> 0.9.2'
需要注意的几点:platform那一行,ios三个字母都要小写,而且与前面的冒号之间不能有间隔,后面的版本号也可以不写,但是有些开源库对版本是有要求的,比如要在6.0以上才能运行,遇到这样的开源库就需要写上版本号。
platform下面就是Cocoapods需要集成的开源库,根据你的需要确定集成那些库。
然后按Esc,并且输入“ :”号进入vim命令模式,然后在冒号后边输入wq
举个例子:
我要集成MBProgressHUD这个库类,需要在Cocoapods里面先搜索是否有需要的库,可以在Terminal中输入:pod search MBProgressHUD回车之后就可以看到和你搜索的关键字相关的一些库类。
其中第一个就是我们需要的,把pod ‘MBProgressHUD’, ‘~>0.9.2’
那一行复制到我们的Podfile文件中,保存修改。注意: (cocoapod1.0.1版本Podfile文件的内容格式要求发生了变化,必须指出指出所用第三方库的target)
platform:ios, '8.0'
#use_frameworks!个别需要用到它,比如reactiveCocoa
target 'XXXApp' do
pod 'AFNetworking', '~> 2.3.1'<-------第三方
end
然后在Terminal中执行 :
pod install
这时,有可能会遇到以下错误:
解决方案:
终端输入:sudo xcode-select -switch /Applications/Xcode.app(你的Xcode安装路径)
注意:xcode-select 之间没有空格,-switch前有空格
这样,MBProgressHUD就已经下载完成并且设置好了编译参数和依赖,以后使用的时候切记如下两点:
1.从此以后需要使用Cocoapods生成的 .xcworkspace文件来打开工程,而不是使用以前的.xcodeproj文件,如下图所示:2.每次更改了Podfile文件,都需要重新执行一次pod update命令
3.使用的时候还是要导入相应的头文件:#import "MBProgressHUD.h"
ps:当执行pod install之后,除了Podfile,还会生成一个名为Podfile.lock的文件,它会锁定当前各依赖库的版本,之后即使多次执行pod install也不会更改版本,只有执行pod update才会改变Podfile.lock.在多人协作的时候,这样可以防止第三方库升级时候造成大家各自的第三方库版本不一致。所以在提交版本的时候不能把它落下,也不要添加到.gitignore中.
常见错误&解决方案
错误提示1
Error installing cocoapods: activesupport requires Ruby version >= 2.2.2.
解决方案 :
1、安装 RVM baby 版本管理器
$curl -L get.rvm.io | bash -s stable
//________等安装完成 出现下面这行提示以下___________
In case of problems: https://rvm.io/helpandhttps://twitter.com/rvm_io
执行
$source ~/.bashrc
$source ~/.bash_profile
测试是否安装正常
$rvm -v
//________提示以下___________
rvm 1.27.0 (latest) by Wayne E. Seguin, Michal Papis[https://rvm.io/]
2、用RVM升级Ruby查看当前ruby版本
$ruby -v
$rvm list known
//________提示以下___________
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.8]
[ruby-]2.2[.4]
[ruby-]2.3[.0]
[ruby-]2.2-headruby-head
# for forks use: rvm install ruby-head---url https://github.com/github/ruby.git --branch 2.2
# JRuby
jruby-1.6[.8]
jruby-1.7[.23]
jruby[-9.0.5.0]
jruby-head
# Rubinius
rbx-1[.4.3]
rbx-2.3[.0]
rbx-2.4[.1]
rbx[-2.5.8]
rbx-head
# Opal
opal
# Minimalistic ruby implementation - ISO 30170:2012
mruby[-head]
# Ruby Enterprise Edition
ree-1.8.6
ree[-1.8.7][-2012.02]
# GoRuby
goruby
# Topaz
topaz
# MagLev
maglev[-head]
maglev-1.0.0
# Mac OS X Snow Leopard Or Newer
macruby-0.10
macruby-0.11
macruby[-0.12]
macruby-nightly
macruby-head
# IronRuby
ironruby[-1.1.3]
ironruby-head
//___________________
安装ruby 2.2.2 执行
$rvm install 2.2.2
Check XCode is installed or not.
$gcc --version
$ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$brew doctor
$brew update.
完成后 执行
$ruby -v
//–––––打印输出–––––––
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]
$sudo gem install cocoa pods
//______安装成功提示如下______
Done installing documentation for nap, fourflusher, escape, colored, concurrent-ruby, thread_safe, tzinfo, i18n, activesupport, claide, xcodeproj, molinillo, cocoapods-try, netrc, cocoapods-trunk, cocoapods-stats, cocoapods-search, cocoapods-plugins, cocoapods-downloader, cocoapods-deintegrate, fuzzy_match, cocoapods-core, cocoapods after 21 seconds,23 gems installed
$pod setup
备注:苹果系统升级OS X EL Capitan 后安装改为:
$sudo gem install -n /usr/local/bin cocoapods
$pod setup
对于初次使用CocoaPods的同学,即使你不使用pod setup命令,在你初次执行pod install命令时,系统也会自动执行pod setup。而由于网络不稳定的原因,不挂VPN是不可能成功执行pod setup的。(我大天朝的墙啊~~~~)
$ pod repo remove master
$ git clone https://github.com/CocoaPods/Specs.git ~/.cocoapods/repos/master
$ pod repo update