最近在Mac电脑上安装CocoaPods时,遇到了很多问题。为了解决这些问题,我决定记录下整个安装过程。首先,我们需要安装Ruby,因为CocoaPods需要Ruby来运行。Mac系统自带Ruby,但不是最新的版本,所以我们需要更新它。可以在终端输入`ruby -v`查看当前的Ruby版本。要查看最新版本,可以访问Ruby官网(http://www.ruby-lang.org/zh_cn/downloads/)。目前最新版本为2.7.2。
然而,直接安装Ruby并不容易。尽管网上有很多关于如何使用RVM安装Ruby的方法,但我尝试了各种方法都失败了,包括使用homebrew来安装。即使不更新Ruby,直接安装CocoaPods也会失败,要么是因为网络连接问题,要么是在安装过程中出现错误。在绝望之际,我看到了Ruby官网推荐的另一款工具rbenv(https://github.com/rbenv/rbenv)。
接下来,我们需要先安装homebrew。在终端输入以下命令:
```bash
brew update
brew install rbenv ruby-build gcc
```
然后,我们可以开始安装rbenv了。按照以下步骤操作:
1. 安装rbenv:`$ brew install rbenv`
2. 在你的shell中设置rbenv:`$ rbenv init`
注意:执行完这条指令后,终端会打印一条信息。我们需要把这条信息添加到`.zshrc`文件的内容末尾。但是可能由于系统更新,我的电脑上的`.zshrc`文件并不在`~/.zshrc`这个路径下。我直接在Finder里搜索找到了它。
找到zshrc文件后,我们需要编辑它。这是系统文件,不能直接编辑。在终端输入以下命令:
```bash
vim ~/.zshrc
```
按i进入编辑模式(vim编辑器的用法大家可自行搜索),用方向键将光标移到最后一行末尾,按回车键换行后将`eval "$(rbenv init -)"`复制粘贴到文末,最后按esc键退出编辑,然后输入:wq!指令强制保存并退出。
现在我们需要关闭当前的终端窗口,然后打开一个新的窗口,以便之前的改动生效。接着,我们可以使用以下命令验证rbenv是否安装成功:
```bash
rbenv doctor
```
如果你没有按照步骤2执行安装,那么在终端中会显示 "Checking for rbenv shims in PATH: NO",这意味着安装失败。由于网络问题,你无法访问 https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor 这个地址,导致验证命令执行失败。为了解决这个问题,你需要将网页上的 rbenv-doctor 脚本内容复制并在本地创建一个同名的 .sh 脚本文件,然后将内容粘贴到该文件中。接下来,在终端中执行该脚本,发现它是可行的。
在本地创建 rbenv-doctor 脚本
在完成上述操作后,你可以继续执行验证操作。以下是验证结果:
```
5. That's it! Installing rbenv includes ruby-build, so now you're ready to install some other Ruby versions using
```
验证结果如上图所示,代表 rbenv 安装成功了。现在你可以在终端中输入 `rbenv install` 来安装最新版的 Ruby。
一旦 Ruby 安装成功,你就可以继续安装 CocoaPods。以下是 CocoaPods 的安装步骤:
1. 首先更换源,在终端中输入以下命令:
```bash
echo 'export LC_ALL=en_US.UTF-8' >> ~/.bash_profile
source ~/.bash_profile
pod repo update --silent "https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git"
```
2. 然后开始安装 CocoaPods:
```bash
sudo gem install cocoapods
```
3. 最后,你需要安装本地库。请注意,在新版 MacOS Catalina 系统上执行此命令可能会直接结束,需要手动安装本地库。执行以下命令:
```bash
sudo gem install cocoapods-autoprefix-install --no-document --force
```
4. 如果在使用 `pod install`、`pod update` 时遇到卡顿,你可以尝试在 Podfile 中切换到国内镜像源。将源替换为以下内容:
```ruby
platform :ios, '9.0'
use_frameworks!
target 'YourAppTargetName' do
pod 'Alamofire', '~> 5.4' # 请替换为实际需求的版本号
end
```