OC学习14:rvm、Ruby、gem、cocoapods探索

张建 lol

Homebrew 介绍

Homebrew 是一个 软件包管理器,用于在 Mac 上安装一些 OS X 上没有的 UNiX 工具;类似于360软件管理器。

Rvm 介绍

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

1
摘录: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.

Ruby 介绍

Ruby 是一种 面向对象的脚本语言,简单易用,功能强大。能跨平台和可移植性好等等。其实就是种脚本语言。

Ruby 的软件源使用的是亚马逊的云服务,国内网络环境下载时可能会出现各种不稳定和超时,所以自带的需要FQ,可以将官方 ruby 源 替换成国内 China ruby 源。2016.06 淘宝源暂停维护了。

CocoaPods 介绍

  • CocoaPodsiOS 最常用的 第三方类库管理工具,绝大部分有名的开源类库都支持 CocoaPods。

  • CocoaPods 是用 ruby 实现的,它是由 日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto) 创建于1993年,与Perl、Python等类似,是一种 脚本语言。要想使用它首先需要有 ruby 的环境。幸运的是 OS X 系统默认已经可以运行 ruby 了。但是有时候 ruby 版本过低是无法正常支持 CocoaPods 的使用,所以需要先安装更新升级 rvmruby

  • Cocoapods 项目 源码 存放在 Github 上进行管理,我们在开发iOS项目时,不可避免的要使用 第三方开源库Cocoapods 的出现使我们 节省了设置和更新第三方开源库的时间

  • CocoaPods 让我们无需再通过拖 第三方库及第三方库所依赖的 framework静态库到项目中等麻烦的操作,仅仅只需要通过终端(Terminal)输入一些指令即可完成这些操作;而且涉及到第三方库的更新升级也可以通过 CocoaPods进行手动管理更新。

rvm 安装与卸载

  • 查看当前版本
1
rvm -v
  • 安装
1
2
3
curl -L get.rvm.io | bash -s stable 或者 curl -L https://get.rvm.io | bash -s stable
source ~/.bashrc
source ~/.bash_profile
  • 卸载(执行会彻底删除 .rvm 目录,从而删除 rvm)
1
rvm implode 或者 rm -rf ~/.rvm

Ruby 安装与卸载

1
2
3
使用 ruby 原因:
虽然 macOS 自带了一个 ruby 环境,但是是系统自己使用的,所以权限很小,只有系统能用;~/Library 目录是 root 管理者权限,所以很多会提示无权限。使用自带 Ruby 更新,管理不方便,一系列无原因的报错,因此推荐另外安装一个 ruby 环境。
[删除系统 ruby 方法[删除容易出现问题,不要删除]
  1. Ruby查看
  • 在安装 Cocoapods 管理依赖工具前,我们需要保证 Ruby 环境是 最新 的,否则会出现一些 安装问题

  • 默认情况下,MacOS 系统已经安装好 Ruby,默认安装在 cd /System/Library/Frameworks/Ruby.framework/Versions/Current 目录下,但不是最新的环境

  • 终端 可以直接通过以下命令,确认系统的 Ruby 的版本信息:

1
2
3
// 查看 Ruby 版本
mac@MacdeMBP ~ % ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
  • 查看已安装 Ruby 版本
1
rvm list
  • 查看可安装 Ruby 版本
1
rvm list known
  • 安装指定 Ruby 版本
1
rvm install x.x.x
  1. 删除系统 Ruby
1
sudo rm /System/Library/Frameworks/Ruby.framework/Versions/Current
  1. 下载并解压所需的 Ruby 版本
1
sudo ln -s 2.6 /System/Library/Frameworks/Ruby.framework/Versions/Current
  • 安装时,可能会遇到错误,大部分是因为没有安装 Homebrew 造成,所以要提前安装Homebrew比较好)

  • 但是,由于默认的 Ruby 安装在 /System 目录下,过深的与 linux 约定不同的目录结构对日常的开发、维护都带来许多不便。

  • 所以,在 MacOS 上推荐使用 homebrew 来安装、管理 Ruby 的版本。

  1. 安装 homebrew
  • 在终端下,执行下面的命令,即可完成homebrew的安装(注:安装过程中提示输入当前用户的密码):
1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • 该命令将会从 homebrewGitHub 仓库抓取最新版本并 自动完成安装。安装成功后,即可使用 brew 命令来安装 Ruby 的最新版本,以及其他工具。

  • homebrew 的默认安装目录为 /usr/local,所有通过 brew 安装的程序都会默认安装到 /usr/local/Cellars/程序名/版本号/ 目录下。

  1. 通过 brew 安装 Ruby 最新版本

在终端下执行以下命令,即可自动完成最新版本 Ruby 的安装:

1
2
brew update
brew install ruby

说明:
1、brew update 将会从 GitHub 上更新 brew 所支持的所有软件的版本信息,保证你能够安装到最新的版本
2、brew install ruby 将会从 RubyGitHub 仓库抓取最新版本的代码,并编译安装

  1. 安装成功后,重新执行 ruby -v 确认已成功安装了最新版本的 Ruby:
1
2
ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
  1. 查看 Ruby 安装的路径地址
1
which ruby
  1. 卸载 Ruby(或者直接使用删除 rvm 命令)
1
rvm uninstall x.x.x 或者 rvm remove x.x.x

如果出现类似错误:

1
2
Error running '__rvm_rm_rf /Users/xxx/.rvm/rubies/ruby-2.6.9-preview2',
please read /Users/xxx/.rvm/log/1538210544_ruby-2.6.0-preview2/remove.rubies.log

可以使用 remove 命令:

1
2
sudo rvm remove 2.6.0,完全移除。
或者 sudo rm -rf ”ruby 安装的路径地址“ (暴力删除,直接将 ruby 文件干掉)

gem

默认的镜像资源服务器被天朝给墙了。所以需要先更换源地址,然后再安装。

  1. 移除原先的 Ruby 源:
1
$ gem sources --remove https://rubygems.org/
  1. 指定为 Ruby China 的镜像源:
1
$ gem sources --add https://gems.ruby-china.com/
  1. 验证新源是否替换成功
1
2
3
4
$ gem sources -l
*** CURRENT SOURCES ***

https://gems.ruby-china.com/

Cocoapods 安装

使用 rubygem 命令下载并安装 CocoaPods

  1. macOS Catalina 系统版本之前用:$sudo gem install cocoapods
    macOS Catalina 系统版本之前版本后需要改为 : $ sudo gem install -n /usr/local/bin cocoapods

  2. 安装$ pod setup

  • 所有项目的 Podspec 文件都托管在 https://github.com/CocoaPods/Specs 中。第一次执行 pod setup 时,CocoaPods 会将这些 Podspec 索引文件更新到本地的 ~/.cocoapods/目录下,该索引文件较大且更新非常缓慢。

  • 可以替换镜像,有两种方式:gitcafe 或者 occhina 镜像:

1
2
3
pod repo remove master
pod repo add master https://gitcafe.com/akuandev/Specs.git
pod repo update
  • 也可以将以上代码中的 https://gitcafe.com/akuandev/Specs.git 替换成 http://git.oschina.net/akuandev/Specs.git 即可使用 occhina 上的镜像。

搜索相关框架

打开终端,输入以下命令:pod search 框架名,如搜索网络框架 AFNetworking

1
$ pod search AFNetworking

移除 trunk 源

如果执行 pod 相关命令时,显示 CDN 无法连接、连接超时之类的情况,可以移除 trunk 源,然后在 Podfile 文件中第一行指明依赖库的来源地址,不使用默认 CDN

1
$ pod repo remove trunk

项目中的使用

  1. 创建 Podfile 文件

新建 Xcode 项目,在终端里 cd 到项目的主文件夹(就是包含 项目 .xcodeproj 的文件)。执行命令:

1
2
# 创建 Podfile 文件
$ pod init
  1. 编辑 Podfile 文件有两种方式:
  • 【方法一】:终端编辑 vim Podfile
    执行 vim Podfile 命令后,会打开上一步骤创建的 Podfile 文件,你需要通过 vim 编辑此文件,默认进入命令模式。

    • 键盘命令 i :input,输入模式
    • 键盘命令 ESC : 从输入模式退出到命令模式
    • 键盘命令 shift + : : 在命令模式下,输入该键盘组合命令,就会进入末行模式
    • 键盘命令 wq : 在末行模式下,输入 wq ,即 write and quit,保存并退出!
  • 【方法二】:直接打开项目文件 Podfile

  1. 保存文件后,安装第三方库
  • 更新依赖库,执行 pod update(记得cd 到项目主文件下)。
  • 安装依赖库,执行 pod install
  1. 安装完成,此时项目文件中会多出 .xcworkspace 文件,以后就通过它来打开项目。

Podfile 文件示例

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 指明依赖库的来源地址,不使用默认 CDN
source '[https://github.com/CocoaPods/Specs.git](https://github.com/CocoaPods/Specs.git)'

# Uncomment this line to define a global platform for your project
platform :ios, '9.0'

# 屏蔽所有第三方框架警告
inhibit_all_warnings!

target 'ProjectName' do

# Uncomment this line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!

# Pods for ProjectName

# 网络库
pod 'AFNetworking'
pod 'SDWebImage'
pod 'Reachability'

# 服务类
pod 'Bugly'

# UI
pod 'Masonry'
pod 'MBProgressHUD'
pod 'MJRefresh'
pod 'EAIntroView'
pod 'SDCycleScrollView'
pod 'DZNEmptyDataSet'
pod 'XLForm'
pod 'SHSPhoneComponent'
pod 'BEMCheckBox'
pod 'SCLAlertView-Objective-C'

# 工具组件类
pod 'ChameleonFramework'
pod 'FDFullscreenPopGesture'
pod 'IQKeyboardManager'
pod 'YYKit'
pod 'UIAlertController+Blocks'
pod 'LBXScan/LBXNative'
pod 'LBXScan/UI'
pod 'UITableView+FDTemplateLayoutCell'

end

target 'ProjectNameTests' do
inherit! :search_paths
end

"Podfile" 52L, 999C

三方库常用命令

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
###### 安装 Cocoapods ######

# 更新 gem 版本
$ sudo gem update --system

# 查看已安装的 Ruby 版本
$ gem -v

# 替换 Ruby 源
$ gem sources --remove [https://rubygems.org/](https://rubygems.org/)
$ gem sources -add [https://gems.ruby-china.com/](https://gems.ruby-china.com/)

# 查看验证镜像源
$ gem sources -l

# 卸载 Cocoapods
$ sudo gem uninstall cocoapods

# 重新安装 Cocoapods 到指定目录
$ sudo gem install cocoapods -n /usr/local/bin

# 查看当前 Cocoapods 版本
$ pod --version

# 更新本地的 Cocoapods 列表
$ pod repo update

# 移除 trunk 源
$ pod repo remove trunk

###### 项目中使用 ######

# 搜索框架
$ pod search 框架名

# 终端导航到项目目录下
$ cd [Project]

# 创建 Podfile 文件
$ pod init

# 编辑 Podfile 文件
$ vim Podfile

# 安装
$ pod install

# 更新所有依赖的开源库
$ pod update
$ pod install --no-repo-update
$ pod update --no-repo-update

# 查看依赖库版本信息
$ pod install --verbose --no-repo-update

Cocoapods常用命令?

  • 下载并安装所有依赖项

pod install

  • 更新依赖项

pod update

  • 查找可更新的库

pod outdated

  • 删除项目中的cocoapods

pod deintegrate

  • 搜索

pod search

podfile.lock是什么?

podfile.lock 文件是第一次运行 pod install 后生成的,并跟踪安装每个 pod 版本。

pod install做了什么?

  • 创建或更新 workspace
  • project 添加到 workspace
  • Cocoapods静态库 添加到 workspace
  • Cocoapods 的 xcconfig 文件添加到应用程序项目中
  • 将应用的 target xcconfig 更改为基于 Cocoapods 的配置

CDN: trunk URL couldn’t be downloaded: https://cdn.jsdelivr.net/cocoa/Specs/d/1/8/CocoaLumberjack/1.9.2/CocoaLumberjack.podspec.json Response: Timeout was reached

pod install 时,报上面的错误,我们在浏览器中输入 https://cdn.jsdelivr.net/ 回车,如果连不上,肯定是会报错的。

由于 cocoapods 默认是走 CDN 镜像源,从这个源的 URL干线 去更新,如果 CDN 不通,就无法更新。

Podfile 中指定的源是 source 'https://cdn.cocoapods.org/',如果项目中指定的源为 source 'https://cdn.cocoapods.org/',那么就得先保证 CDN 能通,否则肯定报错。

如果走不通 CDN 的话,我们就需要将 Podfile中 源设置成 清华源(source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git')GitHub源(https://github.com/CocoaPods/Specs.git)

  • Post title:OC学习14:rvm、Ruby、gem、cocoapods探索
  • Post author:张建
  • Create time:2020-08-01 16:33:41
  • Post link:https://redefine.ohevan.com/2020/08/01/OC/OC学习14:rvm、Ruby、gem、cocoapods探索探索/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.