点赞!!!
都还干着iOS嘛???!!!
背景
新入职公司,分配一台全新MacBook pro,借此机会梳理一下cocoapods的完整安装流程。
cocoapods安装依赖关系
cocoapods安装需要ruby,更新ruby需要rvm,下载rvm需要gpg,下载gpg需要homebrew,所以安装顺序是homebrew->gpg->rvm->ruby-cocoapods,注意这是完整流程,如果只是更新做cocoapods更新操作即可,不需要从第一步开始。
- 先安装Homebrew
2020版mac 安装homebrew失败 极简解决方案
git config --global --add safe.directory /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
git config --global --add safe.directory /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask
检测Homebrew是否安装成功
输入
brew --version
返回
Homebrew 4.0.1-24-ge358035-dirty
Homebrew/homebrew-core (git revision 5c8a7bb5c3a; last commit 2023-02-17)
Homebrew/homebrew-cask (git revision 90f1b9d0c9; last commit 2023-02-17)
- 更换源,把Ruby官方镜像改为国内镜像
2.1 检查更新ruby环境,更新gem版本
sudo gem update --system
2.2 查看gem版本
gem -v
注:请尽可能用比较新的 RubyGems 版本,建议 2.6.x 以上。
我目前的版本为2.6.3,安装更新后为3.0.2
2.3 删除镜像
gem sources --remove https://rubygems.org/
2.4 修改镜像
gem sources --add https://gems.ruby-china.com/
2.5 为了验证你的Ruby镜像是并且仅是ruby-china,执行以下命令查看
gem sources -l
2.6 终端显示为如下即为成功,注:确保只有 gems.ruby-china.com 才为成功,如果有其他的请自行百度解决
*** CURRENT SOURCES ***
https://gems.ruby-china.com/
- 通过Homebrew安装ruby最新版
3.1 查看 ruby 的安装目录(用处不大)
which -a ruby
注:执行以上命令后会输出 2 行,
- 其中 /usr/local/opt/ruby/bin/ruby 是通过 Homebrew 安装的,
- 而 /usr/bin/ruby 是 Mac 自带的 ruby,
- 请不要随便删除自带的 ruby, 否则会出现问题(这个本人也没尝试只是老外博文里说的)
通过 HomeBrew安装的版本:ruby 3.2.1 路径:/usr/local/opt/ruby/bin/ruby
Mac 自带版本: ruby 2.6.3 路径:/usr/bin/ruby
3.2 通过 Homebrew 安装 ruby
brew install ruby
3.3 使用以下命令查看 ruby 版本
ruby -v
如果成功安装之后使用命令查看 ruby 版本发现仍然是 Mac 自带的版本,类似如下
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin20]
3.4 此时只需把 ruby 3.2.1 可执行文件导入全局变量 PATH 中即可,使用如下命令:
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
3.5 再次查看 ruby 版本
ruby -v
显示以下命令行即为成功
ruby 3.2.1 (2023-02-08 revision 31819e82c8) [x86_64-darwin20]
至此 ruby 3.2.1 安装成功
- 这时候才正式开始安装CocoaPods
4.1 为了安全起见,执行以下命令,卸载原有的CocoaPod(全新安装用不到)
sudo gem uninstall cocoapods
4.2 执行以下命令来重新安装cocoapod
//Mac OS X 10.11前
sudo gem install cocoapods
//Mac OS X 10.11后
sudo gem install -n /usr/local/bin cocoapods
4.3 如果没有权限执行pod,执行以下命令,赋予/usr/local/bin给予执行与读取权限
sudo chmod +rx /usr/local/bin/
4.4 检测pod是否安装成功
pod --version
ikuai@iKuaideMacBook-Air ~ % pod --version
1.11.3
ikuai@iKuaideMacBook-Air ~ %
4.5 更新Podspec索引文件
安装成功后 执行
pod setup
pod setup作用:
将所有第三方的Podspec索引文件更新到本地的~/.cocoapods/repos目录下。所有的第三方开源库的Podspec文件都托管在https://github.com/CocoaPods/Specs,我们需要把这个Podspec文件保存到本地,这样才能让我们使用命令pod search 开源库搜索一个开源库,怎样才能把github上的Podspec文件保存本地呢?那就是 pod setup
执行pod setup时,CocoaPods 会将第三方的podspec索引文件更新到本地的~/.cocoapods/repos目录下。
但是第一次执行pod setup时,这个github的Podspec索引文件比较大,有 300M 左右(以后会越来越大的),所以第一次更新时非常慢.要耐心等待…..
最后当出现 Setup completed 表示setup完成。
如果遇到如下报错:
[!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master --progress
Cloning into 'master'...
remote: Counting objects: 2016093, done.
remote: Compressing objects: 100% (555/555), done.
error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
可能是Git的传输字节限制引起的,这时候使用 git config -l,查看Git配置,如下图,红色框是我配置的传输字节大小。
字节限制
解决方法:修改传输字节限制,使用以下方法。后面的限制数字,可以自己定大小(524288000,相当于500M)
git config --global http.postBuffer 1048576000
执行后在
git config -l
看看是否修改成功。
4.6 pod setup太慢终极解决办法
pod setup的本质就是将
https://github.com/CocoaPods/Specs.git
的代码下载到~/.cocoapods/repos/master
当我们去执行pod setup的时候,会发现那是一个相当的慢。估计一天的时间都浪费再这上面。这是因为使用的国外的镜像,只要使用国内的镜像就很好的解决了。
只要使用
cd ~/.cocoapods/repos
ikuai@iKuaideMacBook-Air ~ % cd ~/.cocoapods/repos
cd: no such file or directory: /Users/ikuai/.cocoapods/repos
ikuai@iKuaideMacBook-Air ~ %
如果没有则创建
mkdir -p ~/.cocoapods/repos/
cd ~/.cocoapods/repos
备注:cocoapods 是一个隐藏目录
隐藏文件所在的目录按键盘上面的shift+cmmand+. ,接着看到隐藏文件夹内凡是前面带有小点的隐藏文件,或者是显示淡蓝色的文件都是隐藏文件,再次按上面的键隐藏。
然后 执行
pod repo remove master
来删除master文件
再执行
//new
git clone --depth 1 https://github.com/CocoaPods/Specs.git master
//old
git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git master
你会发现那速度杠杠的
pod setup
成功后会生成~/Library/Caches/CocoaPods/search_index.json文件。
终端输入
rm ~/Library/Caches/CocoaPods/search_index.json
删除~/Library/Caches/CocoaPods目录下的search_index.json文件
删除成功后终端输入:
pod search AFNetworking(不区分大小写)
输出:Creating search index for spec repo 'master'.. Done!,稍等片刻就会出现所有带AFNetworking字段的类库出现。
4.7 CocoaPods 升级1.8.4的坑 CDN: trunk Repo update failed
由于项目是用CocoaPods管理,CocoaPods 1.8将CDN切换为默认的spec repo源,并附带一些增强功能!CDN支持最初是在1.7版本中引入的,最终在1.7.2中完成。 它旨在大大加快初始设置和依赖性分析。
解决办法:
(1)podfile添加source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'
(2)pod repo list 查看一下源列表
(3)pod repo remove trunk 移除trunk源
当执行 pod install 或者 pod update 后出现 Cloning spec repo cocoapods from https://github.com/CocoaPods/Specs.git 卡住情况,如图:
其实并没有卡住,只是因为网速慢的原因导致下载 spec repo cocoapods 速度慢,给人感觉像是卡住了。你可以到系统的“活动监视器”中查看“网络”这块,会发现有一些东西正在被下载,有一个 “git-remote-https” 就是负责下载 spec repo cocoapods 的,所以慢慢等待吧!
4.8 CocoaPods的具体使用
新建一个Xcode工程,使用终端cd到工程目录下
创建Podfile文件:
pod init
之后就可以在项目目录里看到一个Podfile文件
打开Podfile文件:
open Podfile
添加:
source ‘https://github.com/CocoaPods/Specs.git’
platform :ios, '9.0'
target '项目名称' do
pod 'AFNetworking'
end
保存后退出
开始下载:
pod install
Pod安装需要ruby,ruby需要rvm
macOS Catalina 10.15 十分钟安装 CocoaPods
4. 更新Podspec索引文件