一、 什么是CocoaPods
CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为` Pods `的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以
轻松管理其版本
1. 在引入第三方类库时,CocoaPods可以自动为Xcode项目配置好各种各样的配置,包括 配置变异阶段,连接器阶段,甚至是ARC环境的-fno-objc-arc 配置等.
2.使用Cocoapods可以查找最新的第三库、并且是最新的、标准的第三方库,并且可以引用时更新最新版本第三方库
二、 Ruby镜像准备
- 查看当前Ruby版本
rvm -v
- ruby镜像源
由于国内防火墙的问题,需要将镜像源更换为ruby-china,之前网上大多使用https://ruby.taobao.org,但taobao Gems 源已停止维护,现由 ruby-china 提供镜像
服务. 因此,我们使用 https://gems.ruby-china.org/作为最新的镜像源服务
- 查看当前最新的镜像源,执行命令
gem sources -l
- 如已是 ruby-china ,则跳过此步骤; 更换镜像源地址:
gem sources --remove https://rubygems.org/
gem sources --add https://gems.ruby-china.org/
- 再次查看源路径是否更新成功
gem sources -l
- 更新Ruby,执行命令(只有确保sources是ruby-china 才可以更新)
sudo gem update --system
三 、安装Cocoapods
- 查看是否已已安装,如已安装,则升级,步骤一致
which pod
- 安装cocoapods ,执行命令
sudo gem install cocoapods
中间可能出现该错误
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted -/usr/bin/pod
如有以上错误,执行命令
sudo gem install -n /usr/local/bin cocoapods
安装过程可能需要点时间 ,尽量在确保网速可以的环境下安装,耐心等待,成功后,可以执行命令查看
pod --version
- 安装成功后,设置本地仓库
即把所有上传到cocoapods的第三方框架下载每个版本和网络地址以及一些其他描述信息到本地,因为服务器是在国外,所以比较耗时间,执行命令:
pod setup
- 安装插件cocoapods-packager
sudo gem install cocoapods-packager
其作用:
1. 通过podspec打包出.a或者.framework,提供给不使用cocoapods或者不方便暴露源码的场景
2. 解决通过不同的方式添加相同的第三方导致的冲突
- 查看pod 命令帮助
pod help
四、开始使用Cocoapods
技术要求:
Xcode新建工程,并使用cocoapods 方式,引入AFNetworking类库
- 首先查看AFNetworking是否支持Cocoapods
pod search AFNetworking
如果中间出现错误:
[!] Unable to find a pod with name, author, summary, or descriptionmatching '······'
如有以上错误,则可以删除本地 search_index.json 文件,重新 pod search,命令如下:
· rm ~/Library/Caches/CocoaPods/search_index.json
· pod search AFNetworking
执行命令后:
-> AFNetworking (3.2.1)
A delightful iOS and OS X networking framework.
pod 'AFNetworking', '~> 3.2.1'
- Homepage: https://github.com/AFNetworking/AFNetworking
- Source: https://github.com/AFNetworking/AFNetworking.git
- Versions: 3.2.1, 3.2.0, 3.1.0, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 3.0.0-beta.3, 3.0.0-beta.2,
3.0.0-beta.1, 2.7.0, 2.6.3, 2.6.2, 2.6.1, 2.6.0, 2.5.4, 2.5.3, 2.5.2, 2.5.1, 2.5.0, 2.4.1, 2.4.0,
2.3.1, 2.3.0, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0, 2.0.0-RC3,
2.0.0-RC2, 2.0.0-RC1, 1.3.4, 1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0, 1.0RC3,
1.0RC2, 1.0RC1, 0.10.1, 0.10.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0, 0.5.1 [master repo]
- Subspecs:
- AFNetworking/Serialization (3.2.1)
- AFNetworking/Security (3.2.1)
- AFNetworking/Reachability (3.2.1)
- AFNetworking/NSURLSession (3.2.1)
- AFNetworking/UIKit (3.2.1)
-> AFNetworking+AutoRetry (0.0.5)
Auto Retries for AFNetworking requests
pod 'AFNetworking+AutoRetry', '~> 0.0.5'
- Homepage: https://github.com/shaioz/AFNetworking-AutoRetry
- Source: https://github.com/shaioz/AFNetworking-AutoRetry.git
- Versions: 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1 [master repo]
-> AFNetworking+Ext (1.2.1)
AFNetworking的封装, 并提供一个 UIImageView+DYLoading cache in fileSystem+memory
pod 'AFNetworking+Ext', '~> 1.2.1'
- Homepage: https://github.com/junhaiyang/AFNetworkingExt
:
从搜索结果可知:
AFNetworking 支持 Cocoapods方式引入
- 新建项目,初始化Podfile
1. cd 项目路径到terminal终端 ,执行命令
2. pod init
terminal:
AllenLASdeMac-Pro:~ allenlas$ cd /Users/allenlas/Desktop/XKHttpNetworkHelper
AllenLASdeMac-Pro:XKHttpNetworkHelper allenlas$ pod init
生成Profile文件:
//引入方式(一般不提倡指定版本,不利于更新类库)
pod "AFNetworking" 或指定版本 pod 'AFNetworking', '~> 3.2.1'
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'XKHttpNetworkHelper' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
# Pods for XKHttpNetworkHelper]
pod 'AFNetworking'
target 'XKHttpNetworkHelperTests' do
inherit! :search_paths
# Pods for testing
end
target 'XKHttpNetworkHelperUITests' do
inherit! :search_paths
# Pods for testing
end
end
- 引入
pod install --no-repo-install 或 pod update --no-repo-update
打开终端,在项目根路径下执行:
AllenLASdeMac-Pro:~ allenlas$ cd /Users/allenlas/Desktop/XKHttpNetworkHelper
AllenLASdeMac-Pro:XKHttpNetworkHelper allenlas$ pod install --no-repo-update
执行结果:

- 在项目中引入 AFNetworking类库
#import <AFNetworking.h> 或 #import "AFNetworking.h"
如果在项目中 #import 第三方类库.h文件 没有提示,则需要把pods目录添加到用户头文件检索的路径到Xcode中
Xcode 选择target -> BuildSettings -> search Paths -> User Header Search Paths
点击“+”号添加一项:并且输入:$(PODS_ROOT) , 选择:recursive(会在相应的目录递归搜索文件)
