cocoapods安裝和使用

場景一: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 #移除指定源
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市氏淑,隨后出現(xiàn)的幾起案子勃蜘,更是在濱河造成了極大的恐慌,老刑警劉巖假残,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缭贡,死亡現(xiàn)場離奇詭異,居然都是意外死亡辉懒,警方通過查閱死者的電腦和手機阳惹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耗帕,“玉大人穆端,你說我怎么就攤上這事》卤悖” “怎么了体啰?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嗽仪。 經(jīng)常有香客問我荒勇,道長,這世上最難降的妖魔是什么闻坚? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任沽翔,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘仅偎。我一直安慰自己跨蟹,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布橘沥。 她就那樣靜靜地躺著窗轩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪座咆。 梳的紋絲不亂的頭發(fā)上痢艺,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音介陶,去河邊找鬼堤舒。 笑死,一個胖子當著我的面吹牛哺呜,可吹牛的內(nèi)容都是我干的舌缤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼某残,長吁一口氣:“原來是場噩夢啊……” “哼友驮!你這毒婦竟也來了?” 一聲冷哼從身側響起驾锰,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎走越,沒想到半個月后椭豫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡旨指,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年赏酥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谆构。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡裸扶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搬素,到底是詐尸還是另有隱情呵晨,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布熬尺,位于F島的核電站摸屠,受9級特大地震影響,放射性物質發(fā)生泄漏粱哼。R本人自食惡果不足惜季二,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胯舷,春花似錦刻蚯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至不翩,卻和暖如春兵扬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背口蝠。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工器钟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妙蔗。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓傲霸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親眉反。 傳聞我的和親對象是個殘疾皇子昙啄,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容