记录寄己走过的路

iOS 管理库工具CocoaPods「安装+问题解决+活用」续更

Write in the first

在开发 OS XiOS 应用程序中,CocoaPods 作为库依赖管理工具就是一把利器。

相信很多开发者跟我当初一样,在 CocoaPods 的安装上踩了无数的坑,接着就是报错问题一个一个的来,以至于不能正常使用,更不用说活用的技巧了。作为【iOS 程序员】的我们,掌握CocoaPods 的使用是必不可少的基本技能了。

在「时间 & 知识 」有限内,总结的文章难免有「未全、不足 」的地方,还望各位好友指出,以提高文章质量。

目录:

  1. CocoaPods 相关介绍
  2. CocoaPods 安装
  3. 开始使用
  4. 安装过程中报错问题解决
  5. 指令补充
  6. CocoaPods 均可参考的资料

Contents【相关介绍】


1. CocoaPods 是什么?

CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具。利用 CocoaPods,可以定义自己的依赖关系 (称作 pods),并且随着时间的变化,以 及在整个开发环境中对第三方库的版本管理非常方便。

2. CocoaPods 背后的理念主要体现在两个方面

  • 在工程中引入第三方代码 会涉及到许多内容。针对 Objective-C 初级开发者来说,工程文件的配置会让 人很沮丧。

  • 在配置 build phaseslinker flags 过程中,会引起许多人为因素的 错误,CocoaPods 简化了这一切,它能够自动配置编译选项,而且涉及到第三方库的更新升级也可以通过 CocoaPods 进行手动管理更新。

3. CocoaPods 的原理

  • 它是将所有的依赖库都放到另一个名为 Pods 项目中,然后 让主项目依赖 Pods 项目,这样,源码管理工作都从主项目移到了Pods项目中。

  • Pods项目最终会编译成一个名为 libPods.a 的文件,主项目只需要依赖这个.a 文件即可。

  • 对于资源文件,CocoaPods 提供了一个名为 Pods-resources.shbash 脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目 标目录中。

  • CocoaPods 通过一个名为 Pods.xcconfig 的文件来在编译时设置所有的依赖 和 参数。

CocoaPods 是用 ruby 实现的,要想使用它首先需要有 ruby 的环境。幸运的是 OS X系统 默认已经可以运行 ruby 了。但是有时候 ruby 版本过低是无法正常支持 CocoaPods 的使用,所以需要先安装更新升级 rvmruby

3. Homebrew、Rvm、Ruby 简介

  1. 官网及相关链接
    【Rvm 官网】:https://www.rvm.io/
    【Ruby 官网】:https://rubygems.org/
    【Rvm 安装指南】:https://rvm.io/rvm/install
    【Homebrew 官网】:http://brew.sh/index_zh-cn.html
    【ruby 镜像 - taobao】:https://ruby.taobao.org/
    【ruby 镜像 - china】:https://gems.ruby-china.org/

  2. Homebrew 介绍
    Homebrew 是一个软件包管理器,用于在mac上安装一些os x上没有的UNiX工具;类似于360软件管理器。

  3. Rvm 介绍
    Rvm 全称 Ruby Version Manager ,是安装和管理 ruby 的一种工具。

    摘录:
    RVM is a command-line tool which allows you to easily install,
    manage, and work with multiple ruby environments from interpreters to sets of gems.

  4. Ruby 介绍
    Ruby 是一种面向对象的脚本语言,简单易用,功能强大。能跨平台和可移植性好等等。其实就是种脚本语言。
    Ruby 的软件源使用的是亚马逊的云服务,国内网络环境下载时可能会出现各种不稳定和超时,
    所以自带的需要翻墙,可以将 官方 ruby 源 替换成国内 淘宝 ruby 源(https://ruby.taobao.org/
    或者是由 China ruby 源 (https://gems.ruby-china.org/ )。
    据消息了解,2016.06【taboo Gems】停止维护了,建议使用 【ruby-china】源。

Installation【CocoaPods 安装】


第一步:检查安装 rvm 环境
提示:不管需不需要升级 ruby,rvm 可以让你拥有多个版本的Ruby,并且可以在多个版本之间自由切换。如果已经安装过跳到第2步。

1
2
3
4
5
6
7
8
9
10
查看是否安装
$ rvm -v
输出结果:( 存在 rvm 环境)
LNdeMacBook-Pro:~ sunhui$ rvm -v
rvm 1.29.1 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io/]
输出结果:(不存在 rvm 环境)
LNdeMacBook-Pro:~ sunhui$ rvm -v
-bash: rvm: command not found

1
2
3
4
5
6
7
8
9
10
11
情况二:如果不存在 rvm 环境,先安装配置 rvm 环境
① 指令安装 rvm
$ curl -L get.rvm.io | bash -s stable
② 然后,载入 RVM 环境
$ source ~/.bashrc
$ source ~/.bash_profile
③ 等待终端加载完毕,后输入
$ rvm -v
如果能显示版本号则安装成功了。

第二步:检查 ruby 版本环境
提示:CocoaPods 目前安装需要Ruby的版本大于2.2.2,不然会报错:Error installing pods: activesupport requires Rubyversion >= 2.2.2。目前Mac系统默认自带是2.0,所以需要升级。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
① 查看已安装的ruby:
$ ruby -v
② 列出ruby可安装的版本信息
rvm list known
③ 指定 ruby 版本进行更新
$ rvm install 2.3.0
④ 这里一定要设置为默认版本
rvm use 2.3.0 --default
等待时间,完成后 Ruby Gems 就安装好了
补充:
1.卸载一个已安装版本
$ rvm remove 1.9.2
2.检查 gem ruby 版本号
$ sudo gem -v
3.更新 gem ruby 版本号:(建议 升级到 2.6.x 以上)
$ gem update --system

第三步:更换源
我们需要来修改更换源(由于国内被墙)所以要把源切换至 ruby-china 在终端执行以下命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1.更新gem
$ sudo gem update --system
2.先移除现有的源
$ gem sources --remove https://rubygems.org/
如果安装了淘宝的镜像
$ gem sources --remove https://ruby.taobao.org/
3.使用新的源
$ gem sources -a https://gems.ruby-china.org/
4.验证新源是否替换成功
$ gem sources -l
只有在终端中出现下面文字才表明你上面的命令是成功的:
*** CURRENT SOURCES ***
说明 CocoaPods 前期配置完毕

第四步:安装Cocoapods
提示:安装 CocoaPods( sudo 表示管理员执行指令 )( 此处需要输入一次密码 )
这里有几种选择,你看心情来吧 ~

选择一:

1
2
3
4
5
1.在终端输入以下命令:
$ sudo gem install -n /usr/local/bin cocoapods
$ pod setup
这个过程会很慢,据说大多都是挂机一晚上才装好的,继续往下看吧,总有更好的。

选择二:

1
2
3
4
5
6
1.执行:
$ git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master
2.切记要:
$ pod repo update
感觉也就几分钟的样子,

CocoaPods 安装,有如图就正常了

先随便搜索一个第三方库,如:

1
2
$ pod search AFNetWorking
有结果不报错说明已经安装成功了。

选择三:

1
2
3
4
把你同事已经装好了CocoaPods
cocoapods目录下的 repo 目录拷贝下来,放进自己的目录里。
$ pod setup。

验证是否安装成功

1
2
3
4
$ pod --version
如果验证成功,显示版本号,如,0.39.0,说明可以安装全部完成.
如果显示-bash: po: command not found,说明没有装好

Getting Started【开始使用】


第一步 :
我们先创建这个神奇的 PodFile。在终端中进入(cd命令)你项目所在目录,然后在当前目录下,利用vim创建Podfile

1
2
3
4
5
6
7
8
9
10
1.cd 到目录文件夹
$ cd /Users/ln/Desktop/LNTestDemo
2.提示
如果不知道第三方库版本的情况下,
建议先查找一下当前所需第三方库的最新版本,如:
$ pod search 'AFNetworking'
3.创建 Podfile 配置文件
$ vim Podfile

第二步 :
键盘输入 i ,进入 Podfile 配置文件的编辑模式
Podfile 配置文件固定语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
说明:可能有些人看到的固定语句不一样,但是大同小异,基本上都能实现最终效果。
(~> 可以指定对应版本,不指定默认为最新版本)
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
target 'LNTestDemo' do // 你的项目名称,自行替换
# Uncomment this line if you're using Swift or would like to use dynamic frameworks
# Pods for LNTestDemo
pod 'AFNetworking', '~>3.1.0'
pod 'SDWebImage'
pod 'MBProgressHUD'
pod 'FMDB'
pod 'Masonry'
pod 'MJExtension'
pod 'MJRefresh'
# use_frameworks!
# pod 'ReactiveCocoa'
end

按一次 Esc 按键退出编辑模式

1
2
保存并退出
:wq

这时候,你会发现你的项目目录中,出现一个名字为Podfile的文件,而且文件内容就是你刚刚输入的内容。注意,Podfile文件应该和你的工程文件.xcodeproj在同一个目录下。

现在,你就可以利用CocoPods下载AFNetworking等类库了。还是在终端中的当前项目目录下,运行以下命令:

1
2
下载第三方库文件到项目工程中
$ pod install

注意:


1、以后打开项目就用 CocoaPodsDemo.xcworkspace 打开,
而不是之前的.xcodeproj文件。否则无法关联pod下来的类库。

2、每次更改了Podfile文件,你需要重新执行一次pod update命令。

3、CocoaPods在执行pod installpod update时,会默认先更新一次CocoPodsspec仓库索引。使用--no-repo-update参数可以禁止其做索引更新操作

1
2
$ pod install --no-repo-update
$ pod update --no-repo-update

4、验证框架是否支持cocoaPods

1
$ pod search MJRefresh

提供:在线搜索验证在线,能搜出说明支持 https://cocoapods.org

5、cocoaPods 隐藏目录

  • 前往—>个人—>.cocoapods
  • .cocoapods/repos/master/Specs放着所有第三方库的索引文件,如下图
    cocoaPods-->master/Specs

技巧:如果master/Specs下载不成功,试着,手动拷贝这个目录试试

6、【卸载 CocoaPods 安装】和【回退到指定 CocoaPods 版本】

1
2
3
4
5
卸载 CocoaPods 安装
$ sudo gem uninstall cocoa pods
回退到指定 CocoaPods 版本
$ sudo gem install -n /usr/local/bin cocoapods --version 0.39

7、查看 CocoaPods 下载进度
还有一点需要注意,pod setup在执行时,会输出Setting up CocoaPods master repo,但是会等待比较久的时间。这步其实是 Cocoapods 在将它的信息下载到 ~/.cocoapods目录下,如果你等太久,可以试着 cd 到那个目录,用du -sh *来查看下载进度

1
2
执行语句
$ sudo gem install -n /usr/local/bin cocoapods

8、在使用时,导入第三方库,应是< >

1
2
#import <UIImageView+WebCache.h>
#import <AFNetworking.h>

9、使用pod install命令安装框架后的大致过程:

1
2
3
4
5
6
7
8
9
1.分析依赖:该步骤会分析Podfile,查看不同类库之间的依赖情况。
如果有多个类库依赖于同一个类库,但是依赖于不同的版本,那么cocoaPods会自动设置一个兼容的版本。
2.下载依赖:根据分析依赖的结果,下载指定版本的类库到本地项目中。
3.生成Pods项目:创建一个Pods项目专门用来编译和管理第三方框架,
CocoaPods会将所需的框架,库等内容添加到项目中,并且进行相应的配置。
4.整合Pods项目:将Pods和项目整合到一个工作空间中,并且设置文件链接。


CocoaPods 正常使用

CocoaPods【安装过程中报错问题解决】

说明:此部分所列举的问题均是在执行相关指令时出现的报错
1、Rvm 环境搭建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1.报错指令:
$ rvm install 2.3.0
2.报错问题:
Error running 'requirements_osx_brew_update_system ruby-2.3.0',
showing last 15 lines of /Users/jijiucheng/.rvm/log/1475769205_ruby-2.3.0/update_system.log
......
......
Requirements installation failed with status: 1.
curl: (35) Server aborted the SSL handshake
3.报错原因:
网络问题,因为需要翻墙,所以网络不稳定;建议选择 VPN,保证线路的稳定性。
4.问题解决:(指令一行一行输入)
$ cd /usr/local
$ git remote set-url origin git://mirrors.ustc.edu.cn/brew.git
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bashrc
5.解决方案:

解决方案连接:https://segmentfault.com/q/1010000004276750


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1.报错指令:
$ rvm install 2.3.0
2.报错信息:
Error running '__rvm_make -j 1',
showing last 15 lines of /Users/jijiucheng/.rvm/log/1475769349_ruby-2.3.0/make.log
......
......
There has been an error while running make. Halting the installation.
3.报错原因:
缺少 Xcode 工具,xcode command line
4.问题解决:
$ xcode-select --install

解决方案连接1:http://stackoverflow.com/questions/35228481/error-running-rvm-make-install
解决方案连接2:http://www.th7.cn/Program/Ruby/201609/966343.shtml


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1.报错指令:
$ rvm install 2.3.0
2.报错信息:
muxuguixiandeMacBook-Pro:local jijiucheng$ rvm install 2.3.0
Already installed ruby-2.3.0.
To reinstall use:
.
rvm reinstall ruby-2.3.0
.
Gemset '' does not exist, 'rvm ruby-2.3.0 do rvm gemset create ' first, or append '--create'.
3.报错原因:
指令不对,已经存在 ruby-2.3.0 的文件残留,需要重新安装;
4.问题解决:
$ rvm reinstall ruby-2.3.0

2、Ruby 环境搭建
待总结 ~ ~
欢迎你补充,我会及时加上,相互学习,我们的分享会让很多人少踩一些坑,少花费一点时间,学习到实用的知识。
可下面留言~

3、CocoaPods 配置使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1.报错指令:
$ pod install
2.报错信息:
muxuguixiandeMacBook-Pro:NFCustomer jijiucheng$ pod install
Setting up CocoaPods master repo
[!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master`.
You can try adding it manually in `~/.cocoapods/repos` or via `pod repo add`.
3.报错原因:
由于安装了多个Xcode导致路径变了,需要变换路径:
sudo xcode-select -switch /Applications/Xcode.app
sudo xcode-select -switch /Applications/Xcode\ 2.app
4.问题解决:
$ sudo xcode-select -switch /Applications/Xcode.app
5.资料补充:
出现 Setting up CocoaPods master repo,说明 Cocoapods 在将它的信息下载到 ~/.cocoapods 里;
新创建终端窗口,输入 cd ~/.cocoapods ,回车,输入 du -sh * 命令来查看文件大小,
每隔几分钟查看一次,这个目录最终大小是100多M( 本人这里大概 800M + ),就是完成了。

解决方案连接1:https://zhidao.baidu.com/question/2205760733872673348.html
解决方案连接2:http://blog.csdn.net/zhangjunjian127/article/details/47954981

instruction【指令补充】


1、Rvm 指令库

1
2
3
4
5
6
7
8
9
10
11
12
13
$ ruby -v # 查看ruby 版本
$ rvm list known # 列出已知的 ruby 版本
$ rvm install 2.3.0 # 选择指定 ruby 版本进行更新
$ rvm get stable # 更新 rvm
$ rvm use 2.2.2 # 切换到指定 ruby 版本
$ rvm use 2.2.2 --default # 设置指定 ruby 版本为默认版本
$ rvm list # 查询已安装的 ruby 版本
$ rvm remove 1.9.2 # 卸载移除 指定 ruby 版本
$ curl -L https://get.rvm.io | bash -s stable # 安装 rvm 环境
$ curl -sSL https://get.rvm.io | bash -s stable --ruby # 默认安装 rvm 最新版本
$ curl -sSL https://get.rvm.io | bash -s stable --ruby=2.3.0 # 安装 rvm 指定版本
$ source ~/.rvm/scripts/rvm # 载入 rvm

2、gem 指令库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$ gem -v # 查看 gem 版本
$ gem source # 查看 gem 配置源
$ gem source -l # 查看 gem 配置源目录
$ gem sources -a url # 添加 gem 配置源(url 需换成网址)
$ gem sources --add url # 添加 gem 配置源(url 需换成网址)
$ gem sources -r url # 删除 gem 配置源(url 需换成网址)
$ gem sources --remove url # 删除 gem 配置源(url 需换成网址)
$ gem update # 更新 所有包
$ gem update --system # 更新 Ruby Gems 软件
$
$ gem install rake # 安装 rake,从本地或远程服务器
$ gem install rake --remote # 安装 rake,从远程服务器
$ gem install watir -v 1.6.2 # 安装 指定版本的 watir
$ gem install watir --version 1.6.2 # 安装 指定版本的 watir
$ gem uninstall rake # 卸载 rake 包
$ gem list d # 列出 本地以 d 打头的包
$ gem query -n ''[0-9]'' --local # 查找 本地含有数字的包
$ gem search log --both # 查找 从本地和远程服务器上查找含有 log 字符串的包
$ gem search log --remoter # 查找 只从远程服务器上查找含有 log 字符串的包
$ gem search -r log # 查找 只从远程服务器上查找含有log字符串的包
$
$ gem help # 提醒式的帮助
$ gem help install # 列出 install 命令 帮助
$ gem help examples # 列出 gem 命令使用一些例子
$ gem build rake.gemspec # 把 rake.gemspec 编译成 rake.gem
$ gem check -v pkg/rake-0.4.0.gem # 检测 rake 是否有效
$ gem cleanup # 清除 所有包旧版本,保留最新版本
$ gem contents rake # 显示 rake 包中所包含的文件
$ gem dependency rails -v 0.10.1 # 列出 与 rails 相互依赖的包
$ gem environment # 查看 gem 的环境
$
$ sudo gem -v # 查看 gem 版本(以管理员权限)
$ sudo gem install cocoa pods # 安装 CocoaPods(以管理员权限)
$ sudo gem install cocoapods # 安装 CocoaPods(以管理员权限)
$ sudo gem install cocoapods --pre # 安装 CocoaPods 至预览版(以管理员权限)
$ sudo gem install cocoapods -v 0.39.0 # 安装 CocoaPods 指定版本(以管理员权限)
$ sudo gem update cocoapods # 更新 CocoaPods 至最新版(以管理员权限)
$ sudo gem update cocoapods --pre # 更新 CocoaPods 至预览版(以管理员权限)
$ sudo gem uninstall cocoapods -v 0.39.0 # 移除 CocoaPods 指定版本(以管理员权限)

3、pod 指令库

1
2
3
4
5
6
$ pod setup
# CocoaPods 将信息下载到~/.cocoapods/repos 目录下。
如果安装 CocoaPods 时不执行此命令,在初次执行 pod intall 命令时,系统也会自动执行该指令
$ pod --version # 检查 CocoaPods 是否安装成功及其版本号
$ pod install # 安装 CocoaPods 的配置文件 Podfile

CocoaPods 均可参考的资料


01 rvm、Ruby环境和CocoaPods安装使用及相关报错问题解决
02 2017最新CocoaPods安装
03 CocoaPods: pod search 搜索类库失败的解决办法
04 整理Cocoapods安装
05 cocoa pods安装报错
06 新手安装CocoaPods
07 安装cocoaPods以及在OSX10.11.5问题总结
08 CocoaPods安装过程与问题解决
09 Cocoapods 的安装和使用以及问题解决
10 最新cocoapods步骤(主要针对Xcode8以上)
11 创建CocoaPods的制作过程
12 CocoaPods新版使用,遇到的那些坑!
13

Write in the last

附上一张图:
一枚程序员 专用壁纸.png

有报错 ~ 看我干肾-->我又不是【鼓励狮】

期待


  • 如果在阅读过程中遇到 error || new ideas,希望你能 messages 我,我会及时改正谢谢。
  • 点击右上角的 喜欢 和 订阅Rss 按钮,可以收藏本仓库,并在 Demo 更新时收到邮件通知。
❄︎ 本文结束    感谢简阅 ^_^. ❄︎

本文标题:iOS 管理库工具CocoaPods「安装+问题解决+活用」续更

文章作者:寄己的路

原始链接:https://sunyonghui.github.io/ToolsAndPlugins/CocoaPods.html

版权声明: 署名-非商业性使用-禁止演绎 4.0 国际 本博客所有文章除特别声明外均为原创,转载务必请「注明出处链接(可点击) - 作者」,并通过E-mail等方式告知,谢谢合作!