CocoaPods安装及使用
2016-06-28 21:38
597 查看
前言
在iOS项目中使用第三方类库可以说是非常常见的事,但是要正确地配置他们有时候是非常繁琐的事情,幸运的是CocoaPods是一个很好的解决方案。一、什么是CocoaPods
CocoaPods是一个负责管理iOS项目中第三方开源库的工具。CocoaPods的项目源码在Github上管理。该项目开始于2011年8月12日,在这两年多的时间里,它持续保持活跃更新。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间Cocoapods意义体现在两个方面。
第一,在引入第三方库时它可以自动为我们完成各种各样的配置,包括配置编译阶段、连接器选项、甚至是ARC环境下的-fno-objc-arc配置等。
第二,使用CocoaPods可以很方便地查找新的第三方库,这些类库是比较“标准的”,而不是网上随便找到的,这样可以让我们找到真正好用的类库。
二、CocoaPods的核心组件
CocoaPods是用Ruby写的,并划分成了若干个Gem包。CocoaPods在解析执行过程中最重要的几个包的路径分别是:CocoaPods/CocoaPods、 CocoaPods/Core和 CocoaPods/Xcodeproj。
1、CocoaPods/CocoaPods
CocoaPods / CocoaPod:这是面向用户的组件,每当执行一个pod命令时,这个组件将被激活。它包括了所有实用CocoaPods的功能,并且还能调用其他gem包来执行任务。2、CocoaPods/Core
CocoaPods / Core:Core gem提供了与CocoaPods相关的文件(主要是podfile和podspecs)的处理。(1)、Podfile:该文件用于配置项目所需要的第三方库,它可以被高度定制。本文中我们主要在这里做动作。
(2)、Podspec:该文件描述了一个库将怎样被添加进工程中。.podspec文件可以标识该第三方库所需要的源码文件、依赖库、编译选项,以及其他第三方库需要的配置。
3、CocoaPods / Xcodeproj
CocoaPods / Xcodeproj:这个包负责处理工程文件,它能创建以及修改.xcodeproj文件和.xcworkspace文件。它也可以作为一个独立的包使用,当你要编写修改项目文件的脚本时,可以考虑使用CocoaPods/Xcodeproj。三、Cocoapods安装步骤
1、升级Ruby环境
终端输入:$gem update --system
此时会出现
Updating rubygems-update Fetching: rubygems-update-2.6.6.gem (100%) ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
这个是因为你没有权限去更新Ruby。
这个时候你可以在终端使用:
$sudo gem update —system
来进行升级。
2、ruby镜像
安装CocoaPods时我们要访问cocoapods.org,该网站可能被我们大天朝墙了,这样下载安装可能会是龟速,幸好我们可以用淘宝的Ruby镜像来访问该网站,方法如下:(1)、移除现有 Ruby 默认源
$ gem sources --remove https://rubygems.org/[/code]
(2)、使用新的源$ gem sources -a https://ruby.taobao.org/[/code]
(3)、验证新源是否替换成功$ gem sources -l3、安装Cocoapods
在终端输入命令$ sudo gem install cocoapods $ sudo gem install -n /usr/local/bin cocoapods $ pod setup
备注:苹果系统升级 OS X EL Capitan 后安装改为:$ sudo gem install -n /usr/local/bin cocoapods $ pod setup
注意:
执行pod setup 命令
出现Setting up CocoaPods master repo,说明Cocoapods在将它的信息下载到 ~/.cocoapods里;
cd 到该目录里,用du -sh *命令来查看文件大小,每隔几分钟查看一次,这个目录最终大小是733M,就是完成了,下载时间较长,请耐心等待。
ps:
错误提示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[/code]
执行$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
安装ruby 2.2.2 执行$rvm install 2.2.2
打印ruby-2.2.2 - #validate archive ruby-2.2.2 - #extract ruby-2.2.2 - #validate binary ruby-2.2.2 - #setup ruby-2.2.2 - #gemset created /Users/abc/.rvm/gems/ruby-2.2.2@global ruby-2.2.2 - #importing gemset /Users/abc/.rvm/gemsets/global.gems.............................. ruby-2.2.2 - #generating global wrappers........ ruby-2.2.2 - #gemset created /Users/abc/.rvm/gems/ruby-2.2.2 ruby-2.2.2 - #importing gemsetfile /Users/abc/.rvm/gemsets/default.gems evaluated to empty gem list ruby-2.2.2 - #generating default wrappers........ Updating certificates in '/etc/openssl/cert.pem'. mkdir: /etc/openssl: Permission denied mkdir -p "/etc/openssl" failed, retrying with sudo LiuWenqiang password required for 'mkdir -p /etc/openssl': and sudo mkdir worked
则说明安装成功了
查看版本$ pod --version
打印:1.0.14、 更新 gem
$sudo gem update --system5、更新master
$ pod repo update master6、新建 Podfile 文件
在终端用 cd 指令到文件夹内,新建 Podfile 文件$ touch Podfile
执行$ pod install7、添加三方库
(1)、查找
$ pod search 第三方
例如:$ pod search AFNetworking
退出:
esc+Q(2)、编辑Podfile文件
$ vim Podfile
进入如下页面:
然后紧接着按键盘上的“i”键,变成如下状态,这个时候可以对Podfile文件进行编辑:$ platform:ios, '7.0' $ target 'firstPodDemo' do $ pod 'AFNetworking', '~> 3.1.0' $ end
在编辑完成后按”esc”,在按”shift”+”:”,这个时候输入wq,点击回车,保存并退出。7、导入三方库
在终端输入命令安装相应的第三方类库$ pod install
然后安装成功
之后关闭工程,从类型为工程名.xcworkspace文件打开即可。四、可能遇到的错误提示及解决方法
Error 1:
Error fetching http://ruby.taobao.org/: bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)
解决方案:
把安装流程中$ gem sources -a http://ruby.taobao.org/
改为:$ gem sources -a https://ruby.taobao.org/[/code]Error 2:
[!] Unable to satisfy the following requirements: - `AFNetworking (~> 2.3.1)` required by `Podfile` Specs satisfying the `AFNetworking (~> 2.3.1)` dependency were found, but they required a higher minimum deployment target.
解决方案:
Podfile 文件 中 platform:ios, ‘8.0’ 后边的 8.0 是平台版本号 ,一定要加上。Error 3:
The dependency `AFNetworking (~> 2.3.0)` is not used in any concrete target.
解决方案:
新的版本cocoapods
把如下代码:$ platform:ios, '7.0' $ pod 'AFNetworking', '~> 3.1.0'
改成:$ platform:ios, '7.0' $ target 'firstPodDemo' do $ pod 'AFNetworking', '~> 3.1.0' $ endError 4:
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[/code]
执行$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
安装ruby 2.2.2 执行$rvm install 2.2.2
打印ruby-2.2.2 - #validate archive ruby-2.2.2 - #extract ruby-2.2.2 - #validate binary ruby-2.2.2 - #setup ruby-2.2.2 - #gemset created /Users/abc/.rvm/gems/ruby-2.2.2@global ruby-2.2.2 - #importing gemset /Users/abc/.rvm/gemsets/global.gems.............................. ruby-2.2.2 - #generating global wrappers........ ruby-2.2.2 - #gemset created /Users/abc/.rvm/gems/ruby-2.2.2 ruby-2.2.2 - #importing gemsetfile /Users/abc/.rvm/gemsets/default.gems evaluated to empty gem list ruby-2.2.2 - #generating default wrappers........ Updating certificates in '/etc/openssl/cert.pem'. mkdir: /etc/openssl: Permission denied mkdir -p "/etc/openssl" failed, retrying with sudo LiuWenqiang password required for 'mkdir -p /etc/openssl': and sudo mkdir worked
则说明安装成功了
然后继续安装 CocoaPods$sudo gem install cocoa pods $sudo gem install -n /usr/local/bin cocoapods $pod setupError 5:
无法搜到到最新SDK
解决办法:
执行$ pod repo update
更新本地仓库五、关于 Podfile.lock
当你执行pod install之后,除了 Podfile 外,CocoaPods 还会生成一个名为Podfile.lock的文件,Podfile.lock 应该加入到版本控制里面,不应该把这个文件加入到.gitignore中。因为Podfile.lock会锁定当前各依赖库的版本,之后如果多次执行pod install 不会更改版本,要pod update才会改Podfile.lock了。这样多人协作的时候,可以防止第三方库升级时造成大家各自的第三方库版本不一致。
CocoaPods 的这篇 官方文档 也在What is a Podfile.lock一节中介绍了Podfile.lock的作用,并且指出:
This file should always be kept under version control.
相关文章推荐
- 查看github pages文档的方式
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 使用BAE的基于Web.py的简单博客程序
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 两分钟学会如何在github托管代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- iOS App开发中的UISegmentedControl分段组件用法总结
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程