本文源自本人的学习记录整理与理解,其中参考阅读了部分优秀的博客和书籍,尽量以通俗简单的语句转述。引用到的地方如有遗漏或未能一一列举原文出处还望见谅与指出,另文章内容如有不妥之处还望指教,万分感谢。
在 iOS 项目中使用第三方库可以说是很常见也必然会用到的,但是想要正确的配置是件很繁琐的事情,幸运的是在Github找到一个叫做CocoaPods的最常用最有名的类库管理工具可以帮助我们解决这繁琐的问题 .
什么是CocoaPods ?
CocoaPods是 iOS 最常用最有名的类库管理工具, 通过简单的命令行就能够完成繁琐的类库导入集成,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间,在我们有了CocoaPods这个工具之后,只需要将用到的第三方开源库放到一个名为Podfile的文件中.这样就方便我们集中管理项目中用到的类库.Cocoapods意义体现在两个方面。第一,在引入第三方库时它可以自动为我们完成各种各样的配置,包括配置编译阶段、连接器选项、甚至是ARC环境下的-fno-objc-arc配置等。第二,使用CocoaPods可以很方便地查找新的第三方库,这些类库是比较“标准的”,而不是网上随便找到的,这样可以让我们找到真正好用的类库!
了解 CocoaPods
CocoaPods是用Ruby写的,并划分成了若干个Gem包。
CocoaPods在解析执行过程中最重要的几个包的路径分别是:CocoaPods/CocoaPods、CocoaPods/Core和CocoaPods/Xcodeproj。
CocoaPods / CocoaPod:这是面向用户的组件,每当执行一个pod命令时,这个组件将被激活。它包括了所有实用CocoaPods的功能,并且还能调用其他gem包来执行任务。
CocoaPods / Core:Core gem提供了与CocoaPods相关的文件(主要是podfile和podspecs)的处理。
Podfile:该文件用于配置项目所需要的第三方库,它可以被高度定制。本文中我们主要在这里做动作。
Podspec:该文件描述了一个库将怎样被添加进工程中。.podspec文件可以标识该第三方库所需要的源码文件、依赖库、编译选项,以及其他第三方库需要的配置。
Cocoapods安装步骤
1、升级Ruby环境 (如果你确定当前使用电脑的 ruby 版本是最新的就不需要再次升级)
终端输入:$gem update --system
此时会出现
ERROR: While executing gem ... (Gem::FilePermissionError)
You don‘t have write permissions for the
/Library/Ruby/Gems/2.0.0 directory.
zijingMacBook-Pro:~ shiyunlei$ sudo gem update —system
这个是因为你没有权限去更新Ruby
这个时候你可以在终端使用:$sudo gem update —system来进行升级
这个时候表示Ruby升级结束。
2、安装CocoaPods时我们要访问cocoapods.org,该网站可能被我们大天朝墙了,这样下载安装可能会是龟速,幸好我们可以用淘宝的Ruby镜像来访问该网站,方法如下:
1、gem sources --remove https://gems.ruby-china.org/
2、gem sources -a https://gems.ruby-china.com
3. 等待添加完成
$ gem sources -l 查看当前源地址。
添加成功尝试安装
sudo gem install fastlane --verbose
sudo gem install -n /usr/local/bin cocoapods --pre
升级 CocoaPod
如果报错可以参考:[CocoaPods的安装及常见错误及解决方案](https://www.jianshu.com/p/ee19d12a4769)
一切畅通无阻!
(以上网址可能以后会有改变,望读者在使用时查询下最新的地址,当然本人也会持续更新)
可以使用下面的命令(红色部分)查看是否更换镜像成功(如下图所示):
安装成功如下:
4 .查看 Cocoapods 版本: pod --version
5. 安装Cocoapods 仓库, 换源安装 repo
>移除原仓库镜像
pod repo remove master
>使用清华源安装到本地 cd ~/.cocoapods/repos/master
git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git
>最后需要setup一下更新本地仓库: pod setup
>查看仓库信息
pod repo
注意: 使用的时候 Podfile文件头部添加 换源后可以忽略
source https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git
6、使用search命令搜索类库名:
$pod search AFNetworking
如果CocoaPods支持,将会输出搜索到的所有类库版本和信息,以及在Podfile中配置的写法,终端返回信息如下:
-> AFNetworking (2.3.1)
A delightful iOS and OS X networking framework.
pod ‘AFNetworking‘, ‘~> 2.3.1’(这个语句是需要在编辑Podfile的时候输入的命令,即是如何安装下载相关类库的指令)
- Homepage:https://github.com/AFNetworking/AFNetworking
- Source:https://github.com/AFNetworking/AFNetworking.git
- Versions: 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]
- Sub specs: - AFNetworking/Serialization (2.3.1) -
AFNetworking/Security (2.3.1) - AFNetworking/Reachability
(2.3.1) -
AFNetworking/NSURLConnection (2.3.1) - AFNetworking/NSURLSession
(2.3.1)
- AFNetworking/UIKit (2.3.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]
5、需要在工程中创建一个Podfile文件,
使用命令:
$cd /Users/shiyunlei/Desktop/CocoapodsSample(进入工程目录,cd后面的是工程的路径)
$ touch Podfile(创建Podfile文件)
然后使用vim编辑Podfile文件,使用命令:
$ vim Podfile
进入如下界面
然后紧接着按键盘上的“i”键,变成如下状态,这个时候可以对Podfile文件进行编辑:
1 target '项目名称' do
2
3 pod 'SVProgressHUD','~> 1.1.3'
4 pod 'AFNetworking','~> 2.6.0'
5 pod 'IQKeyboardManager'
6 pod 'Masonry', '~> 0.6'
7 pod 'FDFullscreenPopGesture', '~> 1.1'
8 pod 'SDCycleScrollView','~> 1.3'
9 pod 'SDWebImage', '~> 3.7.3'
10 pod 'MJRefresh'
11 pod 'HMSegmentedControl'
12
13 end
在编辑完成后按“esc”,
在按“:”,这个时候输入wq,点击回车,保存并退出。
这个时候打开Podfile文件就会看到里面添加了刚才在终端输入的一行语句,如下图
然后在终端输入命令安装相应的第三方类库
$pod install
因为这个过程需要下载相应的类库,所以时间和网速有关。
安装成功之后截图如下:
这个时候会看到之后打开工程都需要从类型为工程名.xcworkspace文件打开。
常用命令总结
// 创建默认的 Podfile
$ pod init
// 第一次使用安装框架
$ pod install
// 安装框架,不更新本地索引,速度快
$ pod install --no-repo-update
终端命令: control + C 取消上一次操作;
// 今后升级、添加、删除框架,或者框架不好用都使用这个命令
$ pod update
// 更新框架,不更新本地索引,速度快
$ pod update --no-repo-update
// 搜索框架
$ pod search XXX
// 帮助
$ pod --help
}
每次在更新CocoaPods的Specs时候都会特别慢,很容易失败,这里给差一个可以缩短是时间的方法
cocoapods 的 sepcs 文件是放在 :~/.cocoapods/repos/
cd 到该目录时直接执行:git clone https://github.com/CocoaPods/Specs.git master
这种方式会特别耗时,而且网速差的时候基本不可能下载成功 !
第一种解决办法:
可以终端执行:git clone --depth=1 https://github.com/CocoaPods/Specs.git master
其实无需全部 clone 下来,可以只 clone 最近一个 commit 的全部代码就可以;如此能够至少缩短一半的时间 !
第二种解决办法:github下载Specs