CocoaPods是OS X和iOS下的一个第三类库管理工具,经过CocoaPods工具咱们能够为项目添加被称为` Pods `的依赖库(这些类库必须是CocoaPods自己所支持的),而且能够
轻松管理其版本
1. 在引入第三方类库时,CocoaPods能够自动为Xcode项目配置好各类各样的配置,包括 配置变异阶段,链接器阶段,甚至是ARC环境的-fno-objc-arc 配置等.
2.使用Cocoapods能够查找最新的第三库、而且是最新的、标准的第三方库,而且能够引用时更新最新版本第三方库
复制代码
rvm -v
复制代码
因为国内防火墙的问题,须要将镜像源更换为ruby-china,以前网上大多使用https://ruby.taobao.org,但taobao Gems 源已中止维护,现由 ruby-china 提供镜像
服务. 所以,咱们使用 https://gems.ruby-china.org/做为最新的镜像源服务
复制代码
gem sources -l
复制代码
gem sources --remove https://rubygems.org/
gem sources --add https://gems.ruby-china.org/
复制代码
gem sources -l
复制代码
sudo gem update --system
复制代码
which pod
复制代码
sudo gem install cocoapods
复制代码
中间可能出现该错误ios
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted -/usr/bin/pod
复制代码
若有以上错误,执行命令git
sudo gem install -n /usr/local/bin cocoapods
复制代码
安装过程可能须要点时间 ,尽可能在确保网速能够的环境下安装,耐心等待,成功后,能够执行命令查看github
pod --version
复制代码
即把全部上传到cocoapods的第三方框架下载每一个版本和网络地址以及一些其余描述信息到本地,由于服务器是在国外,因此比较耗时间,执行命令:
pod setup
复制代码
sudo gem install cocoapods-packager
复制代码
1. 经过podspec打包出.a或者.framework,提供给不使用cocoapods或者不方便暴露源码的场景
2. 解决经过不一样的方式添加相同的第三方致使的冲突
复制代码
pod help
复制代码
技术要求:json
Xcode新建工程,并使用cocoapods 方式,引入AFNetworking类库
复制代码
pod search AFNetworking
复制代码
若是中间出现错误:ruby
[!] Unable to find a pod with name, author, summary, or descriptionmatching '······'
复制代码
若有以上错误,则能够删除本地 search_index.json
文件,从新 pod search
,命令以下:bash
· 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方式引入
复制代码
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
复制代码
执行结果:
#import <AFNetworking.h> 或 #import "AFNetworking.h"
复制代码
若是在项目中 #import 第三方类库.h文件
没有提示,则须要把pods目录
添加到用户头文件检索的路径到Xcode中
Xcode 选择target -> BuildSettings -> search Paths -> User Header Search Paths
点击“+”号添加一项:而且输入:$(PODS_ROOT) , 选择:recursive(会在相应的目录递归搜索文件)
复制代码