請根據(jù)更新記錄(有分割線)有選擇的閱讀本文。
本文于2020年4月25更新。
1.起因:
更新CocoaPods到1.9.1后,當(dāng)天使用一切正常,CDN速度就是快,還沉浸在新版帶來便利的喜悅中,結(jié)果第二天就受挫了,使用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簡易結(jié)構(gòu)圖(不準(zhǔn)確),可以了解1.8以后不再像以前那樣下載master龐大的庫源,而是使用CDN技術(shù)默認trunk庫源。
造成pod search搜索出問題可能是網(wǎng)絡(luò)連不上(具體原因不詳),要不使用代理,要不繼續(xù)使用舊版CocoaPods,下面是新版卻使用舊版master庫源方式暫時解決問題的方法。
3.解決
- 步驟1:恢復(fù)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)重要更新,強烈建議升級,終端執(zhí)行
-
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編程時會使用別人已實現(xiàn)的功能代碼(即第三方庫),每次手動導(dǎo)入這些庫和依賴比較麻煩,而CocoaPods解決這方面的問題。
2.如何安裝CocoaPods
安裝CocoaPods需要Ruby環(huán)境(一種跨平臺腳本語言),macOS自帶的Ruby環(huán)境可能過低需要升級,而Ruby是由RVM(即使Ruby Version Manager)管理的,因此需要先安裝RVM。以下指令在Terminal終端執(zhí)行。
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 的配置信息(使用速度更快的國內(nèi)鏡像) -
rvm install 2.6.4 --disable-binary
下載安裝Ruby2.6.4版(忽略二進制)。注意此過程會檢查有沒有安裝Homebrew(基于Ruby語言的macOSX系統(tǒng)級的軟件包管理器)并自動幫你安裝(如果安裝不成功會有Requirements installation failed with status: 1
提示,請參考附錄2。 -
rvm list
查看Ruby版本,是否安裝成功。
5.更改下載源
CocoaPods的Ruby軟件包是由RubyGems管理的,為了國內(nèi)能用gem更快下載安裝CocoaPods需要更換下載源(如果已更換可忽略)。
-
sudo gem update --system
更新RubyGems升級成功后會提示:RubyGems system software updated -
gem sources -l
顯示源(根據(jù)情況移除所有國外源添加國內(nèi)源) -
gem sources --remove https://rubygems.org/
移除國外源 -
gem sources -a https://gems.ruby-china.com/
添加國內(nèi)源
6.安裝CocoaPods
-
sudo gem install -n /usr/local/bin cocoapods
安裝CocoaPods(macOS10.11以下系統(tǒng)使用sudo gem install cocoapods) -
pod setup
初始化本地庫,注意如果該句無效時(如下圖沒反應(yīng))應(yīng)更換下面等價的語句git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master
-
pod search AFNetworking
測試搜索第三方框架
7.終端方式使用CocoaPods
- 終端使用cd指令進入Xcode所創(chuàng)建項目文件夾下。
- 搜索第三方框架,如
pod search afnetworking
,顯示內(nèi)容過多時可以通過上下鍵滾動,q鍵退出。 - 創(chuàng)建Profile文件,如
pod init
或vim Podfile
(推薦) - 編輯Profile文件,如
vim Podfile
或open Podfile
后編輯內(nèi)容如下圖(關(guān)于vim編輯器使用方法可自行學(xué)習(xí))。 - 安裝框架
pod install
或pod install --no-repo-update
(后者不更新本地庫速度快) - 打開項目文件夾下的xcworkspace文件,即可
import<AFNetworking.h>
方式導(dǎo)入該第三方框架頭文件使用了。
8.卸載CocoaPods
終端執(zhí)行sudo gem uninstall cocoapods
即可卸載。
9.Xcode插件方式使用CocoaPods
附錄一、參考文章
1.《iOS開發(fā)----cocoapods的那些事兒》
2.《CDN,CocoaPods 1.8.0 最完美的升級》
3.《解決 CocoaPods trunk CDN 連接不上的問題》
附錄二、CocoaPods常見錯誤
建議搜索查找,快捷鍵command+f或control+f
1.pod setup沒反應(yīng)、出錯、或提示Unable to find a pod with name, author, summary, or description matching
- 解決方法1:執(zhí)行
git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master
代替pod setup
- 解決方法2:先
rm ~/Library/Caches/CocoaPods/search_index.json
再執(zhí)行pod setup
2.pod search搜索時沒反應(yīng)或提示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源:終端執(zhí)行
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速度具體參考本文上部。
待補充....