場景一:cocoapods安裝步驟
配置 cocoapods需要 ruby, 更新 ruby 需要 rbenv, 下載 rbenv 就需要 homebrew, 所以安裝順序就是 homebrew -> rbenv -> 更新ruby -> cocoapods
安裝 Xcode
Xcode:CocoaPods是用于iOS開發(fā)的依賴管理工具舵鳞,因此你需要先安裝Xcode嫂粟。
安裝Homebrew
Homebrew:Homebrew是一款Mac OS平臺下的軟件包管理工具愤估,擁有安裝璃弄、卸載句各、更新、查看赤嚼、搜索等很多實用的功能搁进。它簡化了安裝和管理軟件的過程。
// 安裝Homebrew
/bin/bash -c "\$(curl -fsSL <https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh>)"
//驗證是否安裝brew成功
brew -v
//更新 Homebrew
brew update
安裝Ruby
Ruby:CocoaPods是用Ruby編寫的缎罢,因此你需要安裝Ruby伊群。雖然macOS自帶了Ruby,但你可能需要更新到較新的版本策精。你可以使用Homebrew來安裝或更新Ruby舰始。
brew search ruby #來查看所有可用的Ruby版本。
brew install ruby@NEW_VERSION # 替換NEW_VERSION為你想要安裝的具體版本號
安裝 rbenv(或者rvm)
rbenv(可選):rbenv和rvm都是 Ruby 版本管理器咽袜,允許開發(fā)者在同一臺機器上輕松安裝丸卷、切換和管理多個 Ruby 版本。
brew install rbenv # 安裝rbenv
將rbenv初始化腳本添加到你的shell配置文件中
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.zshrc
使更改生效 & 驗證rbenv
source ~/.zshrc #使更改生效
rbenv --version #驗證rbenv
安裝CocoaPods
CocoaPods:最后询刹,當然就是安裝CocoaPods本身了谜嫉。在確認已經(jīng)安裝了Ruby之后萎坷,你可以通過運行sudo gem install cocoapods
命令來安裝CocoaPods。
sudo gem install cocoapods #安裝
pod --version # 驗證
場景二沐兰、cocoapods 卸載->重裝
1哆档、如果之前裝過cocoapods,最好先卸載掉住闯,卸載命令:
$ sudo gem uninstall -n /usr/local/bin cocoapods
2瓜浸、查看本地安裝過的cocoapods相關東西
$ gem list --local | grep cocoapods
sudo gem install -n /usr/local/bin cocoapods
會顯示如下:然后逐個刪除吧:
cocoapods-core (0.39.0)
cocoapods-downloader (0.9.3)
cocoapods-plugins (0.4.2)
cocoapods-search (0.1.0)
cocoapods-stats (0.6.2)
cocoapods-trunk (0.6.4)
cocoapods-try (0.5.1)
$ sudo gem uninstall -n /usr/local/bin cocoapods-core
二、安裝
1比原、 查看下當前ruby版本斟叼,如果用這個版本接下來工作失敗了,就更新下ruby
ruby -v
2春寿、更換cocoapods鏡像:
$gem sources --remove https://rubygems.org/
$ gem sources --add https://gems.ruby-china.com
$gem sources -l (用來檢查使用替換鏡像位置成功)
3、下載安裝CocoaPods
sudo gem install -n /usr/local/bin cocoapods
三忽孽、錯誤處理:
1绑改、ERROR: Could not find a valid gem 'cocoapod' (>= 0) in any repository
說明你還沒有安裝命令行工具,執(zhí)行下這個命令:
Xcode-select --install
就會發(fā)現(xiàn) 彈出一個窗問我們是否要安裝命令行工具 兄一。 安裝完了后 再次sudo gem install cocoapods 發(fā)現(xiàn)還是會報同樣的錯誤,可能是權限的問題,使用sudo -i或者sudo su進入到root之后再 執(zhí)行sudo gem install -n /usr/local/bin cocoapods 厘线。
command+q退出一下 再重新進入Shell里面 執(zhí)行sudo gem install -n /usr/local/bin cocoapods 會發(fā)現(xiàn)出來一大段。
2出革、本地多個Ruby環(huán)境導致pod執(zhí)行失敗
如果執(zhí)行任意pod指令都失敗造壮,失敗信息像下面這樣:
Ignoring ffi-1.13.1 because its extensions are not built. try: gem pristine ffi —version 1.13.1
Ignoring gem-wrappers-1.4.0 because its extensions are not builts. Try: gem pristine gem-wrappers —version 1.4.0
Traceback (most recent call last):
23: from /USR/LOCAL/BIN/pod:23:in `<main>`
22: from /USR/LOCAL/BIN/pod:23:in `load`
21: from /Users/username/.rvm/rubies/ruby-2.6.0/lib/ruby/gems/2.6.0/gems/cocoapods-1.9.3/bin/pod:36:in `<top (required)>`
20: from /System/Library/Frameworks/Ruby.frameworks/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require`
如果是這樣子的話,根據(jù)錯誤提示說明是本地有多個Ruby環(huán)境導致的骂束,看看根目錄下是否多了 rvm 目錄耳璧,或者.rvm目錄下多了個Ruby,刪除多余的rvm目錄或目錄下的Ruby即可展箱。
四旨枯、下載指定pod的版本
//Analyzing dependencies
[!] The version of CocoaPods used to generate the lockfile (1.9.2) is higher than the version of the current executable (1.9.1). Incompatibility issues may arise.
Downloading dependencies/
同事的pod版本不一致,git就會一直提示到有這個修改混驰,很煩人攀隔。
查看當前pod版本:
pod --version
直接下載想要的pod版本:
sudo gem install cocoapods --version 1.9.1
刪除不想要的版本:
sudo gem uninstall cocoapods
Select gem to uninstall:
1. cocoapods-1.9.1
2. cocoapods-1.9.2
3. All versions
> 2
//Successfully uninstalled cocoapods-1.2.1
再次查看當前pod版本:執(zhí)行一次當前pod的install命令
pod --version
pod install
五、 spec資源所有庫的配置信息
-
在cocoapods安裝完成以后,在用戶根目錄下有個隱藏文件夾栖榨,
/Users/<user>/.cocoapods
.image -
而
/Users/<user>/.cocoapods/repos/master/Specs/
里面是cocoapods收錄的所有庫的配置信息.Specs目錄下昆汹,并不是直接是以庫的名稱命名的文件夾,而是分了3層目錄婴栽,分別以0-f來命名,比如SDWebImage的配置文件位置就是/Users/<user>/.cocoapods/repos/master/Specs/1/1/7/SDWebImage
满粗,image 這里為什么會分為三層目錄,是根據(jù)什么劃分的呢?其實這里是把某個庫的名稱做了md5,md5前三位是其所對應的三層目錄,比如SDWebImage的md5是
1173B6117A2CF4A6756F761AEDAE9D2C
居夹,那么其目錄結構就是1/1/7.-
Spec內(nèi)的框架每一個版本內(nèi)并不是具體的代碼,而是一個json文件,里面記錄這該框架當前選中的版本的詳細信息,包括作者败潦、github位置....等等.
image
六本冲、podfile文件 ——關于版本指定約束
- 一般我們在使用cocoapods導入第三方庫前都會生成一個podfile文件,文件中記錄著我們要導入的第三方庫以及對應的版本信息,比如:
pod 'SDWebImage', '~> 4.3.2'
這里的意思是指:讓cocoapods導入SDWbImage框架,版本號4.3.2和版本號處于4.3.2-4.4之間的,不包括4.4和更高版本.
所以要想cocoapods導入的框架是我們想要的,必須了解一下版本制定的約束
-
pod ‘ SDWebImage’
--- 不指定版本,表示希望使用最新版本 -
pod 'SDWebImage', '4.3.2'
--- 指定明確版本劫扒,表示只想要這個版本 - 邏輯關系
'> 0.1'
--- 版本號大于0.1的
‘>= 0.1’
--- 版本0.1和版本號大于0.1的
'< 0.1'
--- 版本號小于0.1的
‘<= 0.1'
--- 版本號0.1和版本號小于0.1的 - 最優(yōu)匹配
‘~> 0.1.2'
--- 版本0.1.2和版本號處于0.1.2-0.2之間的,不包括0.2和更高版本
‘~> 0.1'
--- 版本0.1和版本號處于0.1-1.0之間的,不包括1.0和更高版本
‘~> 0'
--- 版本0和更高檬洞,和沒設沒啥區(qū)別
七、常用命令 pod install沟饥、pod update添怔、.pod repo update 、 pod install --no-repo-update
pod install
:執(zhí)行該命令時贤旷,如果Podfile.lock
文件存在, 則直接從此文件中讀取框架信息并且它會只下載Podfile.lock
文件中指定的版本安裝广料。對于不在Podfile.lock
文件中的pod庫,pod install
命令會搜索這個pod庫在Podfile文件中指定的版本來安裝,安裝完畢更新Podfile.lock
文件幼驶;
如果Podfile.lock不存在, 則會讀取Podfile文件內(nèi)的框架信息艾杏,然后執(zhí)行下載并且根據(jù)下載好的框架信息, 生成Podfile.lock文件.
pod update
:只有當你想要更新pod庫的版本時才使用pod update
;它不管Podfile.lock
是否存在, 都會讀取Podfile文件的的框架信息去下載安裝盅藻,下載好之后, 再根據(jù)下載好的框架信息, 生成Podfile.lock
文件.
pod repo update
: 更新整個.cocoapods下的所有庫的配置文件,挨個檢查對應的框架有沒有新版本發(fā)布,有的話更新本地的資源配置文件.
--no-repo-update
:跳過檢查框架有沒有新版本發(fā)布的環(huán)節(jié),一般配合pod install
使用.
pod install --no-repo-update
:根據(jù)podfile
文件或者podfile.lock
下載并導入對應的第三方庫,跳過檢查資源配置文件是否需要更新的環(huán)節(jié).
八购桑、 pod 常用命令
$ pod --version #查看cocoapod 版本
$ gem install cocoapods -n /usr/local/bin #更新cocoapods
$ cd ~/.cocoapods/repos #進入 repos目錄
$ open ~/.cocoapods/repos #進入 repos目錄
$ pod repo #查看當前源
$ pod repo add master https://xxx.git #添加源
$ pod repo remove trunk #移除指定源