请根据更新记录(有分割线)有选择的阅读本文。
本文于2020年4月25更新。
1.起因:
更新CocoaPods到1.9.1后,当天使用一切正常,CDN速度就是快,还沉浸在新版带来便利的喜悦中,结果第二天就受挫了,使用pod search搜索框架时出错:
[!] CDN: trunk Repo update failed - 5 error(s): CDN: trunk URL couldn't be downloaded: https://raw.githubusercontent.com/CocoaPods/Specs/master/Specs/b/e/8/SVProgressHUD/0.7/SVProgressHUD.podspec.json Response: Timeout was reached
2.分析(未找到原因)
画了如上CocoaPods简易结构图(不准确),可以了解1.8以后不再像以前那样下载master庞大的库源,而是使用CDN技术默认trunk库源。
造成pod search搜索出问题可能是网络连不上(具体原因不详),要不使用代理,要不继续使用旧版CocoaPods,下面是新版却使用旧版master库源方式暂时解决问题的方法。
3.解决
- 步骤1:恢复master为默认库源。
cd ~/.cocoapods/repos #进入库源路径
pod repo remove master #移除旧master库源
git clone https://github.com/CocoaPods/Specs.git master #克隆到本地(费时)
pod repo remove trunk #移除trunk库源
其中第三句可以使用清华的镜像或许速度更快一点:
git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git master
- 步骤2:在 Podfile 文件顶部指定源地址。
source 'https://github.com/CocoaPods/Specs.git'
# source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'
注:如果没有在 Podfile 里指定 source 的话,1.8 版本以上的 CocoaPods 会自动重新添加并使用 trunk CDN 源,使用pod search搜索可能会出问题了,因此每个项目的 Podfile 都需要显式指定 source。
本文于2020年4月24日更新。
主要是Cocoapods 1.8.0(使用CDN提速)和1.9(支持XCFrameworks)重要更新,强烈建议升级,终端执行
-
sudo gem install cocoapods
或sudo gem install cocoapods -n /usr/local/bin
。 - 不需要
pod setup
,直接使用。同时可以删除以前的库源pod repo remove master
来释放空间(你懂的,mac电脑最缺)。
具体介绍参考上部链接。
本文于2019年9月更新(初稿),如果过期,请参考其他文章。
1.为什么要使用CocoaPods
CocoaPods:基于Ruby的iOS第三方库管理的工具。
如iOS编程时会使用别人已实现的功能代码(即第三方库),每次手动导入这些库和依赖比较麻烦,而CocoaPods解决这方面的问题。
2.如何安装CocoaPods
安装CocoaPods需要Ruby环境(一种跨平台脚本语言),macOS自带的Ruby环境可能过低需要升级,而Ruby是由RVM(即使Ruby Version Manager)管理的,因此需要先安装RVM。以下指令在Terminal终端执行。
3.安装RVM
-
rvm -v
显示RVM版本,没有安装RVM会提示不存在。 -
curl -L https://get.rvm.io | bash -s stable
下载安装RVM。 -
source ~/.rvm/scripts/rvm
初始化RVM。 -
rvm -v
检查版本(同上)。
4.安装Ruby
-
ruby -v
检查Ruby版本,低于2.2.2时安装CocoaPods会报错。 -
rvm list known
查询所有的Ruby版本,推荐最新版。 -
echo "ruby_url=https://cache.ruby-china.com/pub/ruby" > ~/.rvm/user/db
替换 RVM 的配置信息(使用速度更快的国内镜像) -
rvm install 2.6.4 --disable-binary
下载安装Ruby2.6.4版(忽略二进制)。注意此过程会检查有没有安装Homebrew(基于Ruby语言的macOSX系统级的软件包管理器)并自动帮你安装(如果安装不成功会有Requirements installation failed with status: 1
提示,请参考附录2。 -
rvm list
查看Ruby版本,是否安装成功。
5.更改下载源
CocoaPods的Ruby软件包是由RubyGems管理的,为了国内能用gem更快下载安装CocoaPods需要更换下载源(如果已更换可忽略)。
-
sudo gem update --system
更新RubyGems升级成功后会提示:RubyGems system software updated -
gem sources -l
显示源(根据情况移除所有国外源添加国内源) -
gem sources --remove https://rubygems.org/
移除国外源 -
gem sources -a https://gems.ruby-china.com/
添加国内源
6.安装CocoaPods
-
sudo gem install -n /usr/local/bin cocoapods
安装CocoaPods(macOS10.11以下系统使用sudo gem install cocoapods) -
pod setup
初始化本地库,注意如果该句无效时(如下图没反应)应更换下面等价的语句git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master
-
pod search AFNetworking
测试搜索第三方框架
7.终端方式使用CocoaPods
- 终端使用cd指令进入Xcode所创建项目文件夹下。
- 搜索第三方框架,如
pod search afnetworking
,显示内容过多时可以通过上下键滚动,q键退出。 - 创建Profile文件,如
pod init
或vim Podfile
(推荐) - 编辑Profile文件,如
vim Podfile
或open Podfile
后编辑内容如下图(关于vim编辑器使用方法可自行学习)。 - 安装框架
pod install
或pod install --no-repo-update
(后者不更新本地库速度快) - 打开项目文件夹下的xcworkspace文件,即可
import<AFNetworking.h>
方式导入该第三方框架头文件使用了。
8.卸载CocoaPods
终端执行sudo gem uninstall cocoapods
即可卸载。
9.Xcode插件方式使用CocoaPods
附录一、参考文章
2.《CDN,CocoaPods 1.8.0 最完美的升级》
3.《解决 CocoaPods trunk CDN 连接不上的问题》
附录二、CocoaPods常见错误
建议搜索查找,快捷键command+f或control+f
1.pod setup没反应、出错、或提示Unable to find a pod with name, author, summary, or description matching
- 解决方法1:执行
git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master
代替pod setup
- 解决方法2:先
rm ~/Library/Caches/CocoaPods/search_index.json
再执行pod setup
2.pod search搜索时没反应或提示CDN: trunk - Cannot perform full-text search because Algolia returned an error: 0: Cannot reach any host: execution expired, execution expired, execution expired, execution expired
需要指定搜索源,具体步骤如下()。
- podfile文件中指定source源为master:
source 'https://github.com/CocoaPods/Specs.git'
- 移除trunk源:终端执行
pod repo remove trunk
3.pod install时提示Couldn't determine repo type for URL: 'https://github.com/CocoaPods/Specs.git': execution expired
Cocoapods 1.8.0以后使用CDN大幅提升pod update速度具体参考本文上部。
待补充....