一、什么是CocoaPods?
前言: 思考如何引入一个第三方框架。 例如: 百度地图SDK、友盟、ShareSDK、 信鸽推送等。
CocoaPods应该是iOS最常用最有名的类库管理
CocoaPods 是一个第三方库依赖管理工具。使用一行终端命令即可达到引入第三方库的目的。CocoaPods的使用方式非常简单。
二、CocoaPods安装前准备
CocoaPods使用Ruby语言编写而成。因此需要Ruby的环境, 庆幸的是OS X已经集成了Ruby环境。我们所需要的做的就是通过gem去安装CocoaPods即可。
首次安装CocoaPods之前,Ruby默认源在墙外, 因此我们需要修改下Ruby默认使用的源:
1.查询Ruby的源
gem source -l
查询结果如下:
\\ CURRENT SOURCES \
https://rubygems.org/
查到的这个源是在墙外, 并且淘宝为我们提供了对应的源链接,因此我们需要先移除源链接, 再添加淘宝的源:
2.移除Ruby的源
gem source --remove https://rubygems.org/
移除结果如下:
http://rubygems.org/ removed from sources
3.添加Ruby的源(最近做了修改, 改为了https)
gem source -a https://ruby.taobao.org/
添加结果如下:
https://ruby.taobao.org/ added to sources
对源的操作完成后, 就可以安装CocoaPods了。
三、CocoaPods安装
运行以下命令, 即可实现CocoaPods的安装
sudo gem install cocoapods
运行之后需要输入电脑的密码, 并且没有密码输入的位数提醒。输完密码就进行安装了,安装过程可能会很慢,耐心等待。
上述命令安装完成后,输入以下命令, 进行Cocoapods的建立
pod setup
如果上述命令运行, 皆无错误即完成了CocoaPods的安装!
CocoaPods安装过程中可能遇到的问题
xcrun找不到Xcode
xcrun: error: active developer path
("/Applications/Xcode.app/Contents/Developer/") does not exist, use \xcode-select --switch path/to/Xcode.app\ to specify the Xcode that you wish to use for command line developer tools (or see \man xcode-select)
运行以下命令, 让xcrun的运行路径找到对应的Xcode
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
四、CocoaPods的使用
1. 创建一个需要使用CocoaPods的工程, 并在工程目录下创建Podfile文件
cd /Users/QCL/Desktop/CocoaPods
touch Podfile
创建完成如下图中, 会出现Podfile文件
2.编辑Podfile文件
右键Podfile,选择其他, 使用Xcode打开
选择Xocde
打开后, 即可输入你想导入的框架, 我们以AFNetworking为例:
pod 'AFNetworking'
3.执行cocoapods的安装操作
同样也是要在工程目录下
执行以下命令:
pod install
等其执行完毕,即可完成第三方库的安装
其中还可以调用pod update方法, 也可以达到第三方库安装的目的, 并且会更新版本
在pod install或者pod update过程中会执行podspec索引的更新,需要等待很久,因此为了提升速度可以执行如下命令, 关掉索引的更新
pod install --no-repo-update
并且在安装过程中, 我们不知道cocoapods做了什么, 还可以添加一个参数,用来提示我们,cococapods做了哪些操作
pod install --verbose --no-repo-update
安装完成后, 工程目录下会多出一个白色的文件,如下图:
通过CocoaPods安装完第三方后
之后再打开工程,就用白色的工程文件打开,不再使用蓝色的工程文件。
打开之后,工程的目录层级如下图:
其中Pods工程目录是用来存放第三方库和配置文件的,上面的CocoaPods依旧是我们的工程文件, 在它之中,我们可以继续正常的编写代码。
要想在工程中引第三方文件的头文件还需设置
$(PODS_ROOT) 选择 recursive
为了验证是否安装成功, 我们可以在AppDelegate.m中引入我们所要使用的第三方库的头文件,如引入AFNetworking
#import <AFNetworking.h>
这里需要注意的是, 以后再引入第三方框架,要当系统框架去引入用#import <框架头文件.h>
4.pod搜索功能
CocoaPods上的大部分第三方框架均来自于GitHub, 因此数量也很庞大,记名字是很不明智的,因此,我们可以选择通过搜索来找到自己想要寻找的第三方框架。
pod search 框架关键字, 如下:
pod search sdweb
通过搜索命令, 搜索到的内容如下图:
然后把你想要的框架的名字, 复制到Podfile文件中即可,Podfile文件中的第三方可以有多个, 需要几个,就填入几个,CocoaPods会全部帮你下载下来。
CocoaPods 报错
Xcode 升级到 6.0 后,更新 CocoaPods 或者以前手动添加过第三方SDK改用Cocopods,可能会出现以下的错误
错误1:
[!] The `Paopao [Debug]` target overrides the `PODS_ROOT` build setting defined in `Pods/Target Support Files/Pods/Pods.debug.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
[!] The `Paopao [Debug]` target overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Target Support Files/Pods/Pods.debug.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
[!] The `Paopao [Release]` target overrides the `PODS_ROOT` build setting defined in `Pods/Target Support Files/Pods/Pods.release.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
[!] The `Paopao [Release]` target overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Target Support Files/Pods/Pods.release.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.````
产生此警告的原因是项目 Target 中的一些设置,CocoaPods 也做了默认的设置,如果两个设置结果不一致,就会造成问题。
我想要使用 CocoaPods 中的设置,分别在我的项目中定义PODS_ROOT 和 Other Linker Flags的地方,把他们的值用$(inherited)替换掉,进入终端,执行
pod update
警告没了
>我个人更喜欢一种简单粗暴的方法:
>点击项目文件 project.xcodeproj,右键显示包内容,用文本编辑器打开project.pbxproj,删除OTHER_LDFLAGS的地方,保存,pod update,警告没了。。。。
错误2:
![](http://upload-images.jianshu.io/upload_images/228486-dfcb768dbb6dd821.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
这个解决也比较简单,
在Build Setting 中的Other Linker Flags选项中加入$(OTHER_LDFLAGS) 如图:
![](http://upload-images.jianshu.io/upload_images/1320373-80e2238d2be6345d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
解决错误
编译通过.........
至此, 就完成了CocoaPods的创建和使用。@暮落晨曦 感谢XIAO僵尸