一. 什么是 Cocoapods?
CocoaPods是一个负责管理iOS项目中第三方开源库的工具,CocoaPods的项目源码在Github上管理.
开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间,在iOS开发中经常会用到第三方库如AFNetworking,SDWebImage等,在使用第三方库时,你除了要导入源码外,集成这些依赖库还需要我们手动去配置,还有当这些第三方库发生了更新,还需要手动去更新项目,这就显得非常麻烦.CocoaPods就是为了解决这个问题而生的,通过CocoaPods,我们可以将第三方的依赖库统一管理起来,配置和更新只需要通过简单的几行命令即可完成.
二. 安装cocoapods
(1) 升级Ruby (cocoapods使用Ruby编写)
$sudo gem update —system
(2)更新Ruby源
首先,检查一下你的ruby源
$ gem sources -l
默认情况下,终端应该返回如下信息:
*** CURRENT SOURCES ***
https://rubygems.org/
当然这个源在墙内是访问不到的,因此我们需要删除此源并添加一个可以在国内访问到的镜像
$ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
知道你按照网上写的为什么不对吗?因为你在网上搜到的基本上都是访问的淘宝镜像(如下语句) ---不要执行!!!
$ gem sources -a http://ruby.taobao.org/
然而淘宝却已经将RubyGems镜像的管理工作交由RubyChina负责
并明确指出让我们使用https://gems.ruby-china.org/
此刻再次查看ruby源
$ gem sources -l
终端返回如下信息:
*** CURRENT SOURCES ***
https://gems.ruby-china.org/
(3)安装cocoapods
$ sudo gem install cocoapods
$ pod setup
三. Cocoapods使用
(1) 创建工程cocoapodsDemo
(2) 找到项目所在路径:
$ cd /users/xbk/Desktop/cocoapodsDemo
(3) 搜索需要的库(将配置信息(pod 'AFNetworking', '~> 3.1.0')复制,然后依次按esc wq键退出):
$ pod search afnetworking
(4) 建立podfile文件:
$ touch podfile
(5) 打开podfile文件:
$ open -e podfile
(6) 在打开的podfile中配置文本信息:(复制第三步查询到的 pod 'AFNetworking', '~> 3.1.0' )
platform:ios,‘7.0’
target '项目名' do
pod 'AFNetworking', '~> 3.1.0'
end
(7) 在中断输入:
$ pod install
(8) 继续添加别的第三方库
依次执行(3)、(5)、(6)、(7)步.
(9) 删除cocoapods中的一个或多个类库
platform:ios,‘7.0’
target '项目名' do
pod 'AFNetworking', '~> 3.1.0'
pod 'Masonry', '~> 1.0.2'(直接删除该行,如果想降低版本,直接修改1.0.2为你想要的版本)
end
然后执行pod install 发现Masonry被成功删除
(10) 更新pods中的第三方库文件
$ pod update
四. 删除cocoapods
删除工程文件夹下的Podfile、Podfile.lock及Pods文件夹
删除xcworkspace文件
使用xcodeproj文件打开工程,删除Frameworks组下的 Pods.xcconfig及libPods.a引用
在工程设置中的Build Phases下删除Check Pods Manifest.lock及Copy Pods Resources
五. 使用cocoapods过程中你可能遇到的问题
(1) podfile升级之后到最新版本为1.1.1后,pod里的内容必须明确指出所用第三方库的target(项目名),否则会出现The dependency '' is not used in any concrete target这样的错误
以前错误的姿势:
platform:ios,'7.0'
pod 'AFNetworking', '~> 3.1.0'
pod 'Masonry', '~> 1.0.2'
现在正确的姿势应该是:
platform:ios,'7.0'
target '项目名' do
pod 'AFNetworking', '~> 3.1.0'
pod 'Masonry', '~> 1.0.2'
end
(2) 使用Cocoapods 导入第三方的资源时,出现如下警告:
Your Podfile has had smart quotes sanitised. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice.
先看看错误的写法
platform:ios,'7.0'
target ‘项目名’ do(看这里,拼音(文本)浮下的单引号)
pod 'AFNetworking', '~> 3.1.0'
pod 'Masonry', '~> 1.0.2'
end
正确的写法
platform:ios,'7.0'
target '项目名' do(看这里,英文符下的单引号)
pod 'AFNetworking', '~> 3.1.0'
pod 'Masonry', '~> 1.0.2'
end
(3)升级OS X EI Capiton之后,发现CocoaPods无效了,运行pod后显示:"pod: command not found"的错误。
解决方法:
- 执行命令"sudo gem uninstall cocoapods",卸载原有的CocoaPod(选择All versions项)
- 执行命令"sudo gem install -n /usr/local/bin cocoapods" 来重新安装cocoapod (此时运行pod命令如果还是报错,则执行步骤 3)
- 如果没有权限执行pod,执行命令"sudo chmod +rx /usr/local/bin/",赋予/usr/local/bin给予执行与读取权限.
今天执行 pod install 突然报错
-bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby: bad interpreter: No such file or directory
这是Mac升级系统导致,当你的Mac系统升级为 high siera的时候,别忘记更新cocoapods.
执行命令:
$ sudo gem update --system
$ sudo gem install cocoapods -n/usr/local/bin