CocoaPods的原理、安裝及使用(絕對干貨)

CocoaPods是iOS項目的依賴管理工具,該項目源碼在Github上管理雄人。開發(fā)iOS項目不可避免地要使用第三方開源庫,CocoaPods的出現(xiàn)使得我們可以節(jié)省設(shè)置和第三方開源庫的時間念赶。在使用CocoaPods后础钠,我們只需要把用到的開源庫放到一個名為Podfile的文件中,然后執(zhí)行pod install晶乔。Cocoapods就會自動將這些第三方開源庫的源碼下載下來珍坊,并且為我們的工程設(shè)置好響應(yīng)的系統(tǒng)依賴和編譯參數(shù)牺勾。

一正罢、CocoaPods原理。

CocoaPods的工作主要是通過ProjectName.xcworkspace來組織的驻民,在打開ProjectName.xcworkspace文件后翻具,發(fā)現(xiàn)Xcode會多出一個Pods工程履怯。

1.庫文件引入及配置:

庫文件的引入主要由Pods工程中的Pods-ProjectName-frameworks.sh腳本負責(zé),在每次編譯的時候裆泳,該腳本會幫你把預(yù)引入的所有三方庫文件打包的成ProjectName.a靜態(tài)庫文件叹洲,放在我們原Xcode工程中Framework文件夾下,供工程使用工禾。

2.Resource文件:

Resource資源文件主要由Pods工程中的Pods-ProjectName-resources.sh腳本負責(zé)运提,在每次編譯的時候,該腳本會幫你將所有三方庫的Resource文件copy到目標(biāo)目錄中闻葵。

3.依賴參數(shù)設(shè)置:

在Pods工程中的的每個庫文件都有一個相應(yīng)的SDKName.xcconfig民泵,在編譯時,CocoaPods就是通過這些文件來設(shè)置所有的依賴參數(shù)的槽畔,編譯后栈妆,在主工程的Pods文件夾下會生成兩個配置文件,Pods-ProjectName.debug.xcconfig厢钧、Pods-ProjectName.release.xcconfig鳞尔。

二、安裝CocoaPods

1早直、打開終端寥假,移除現(xiàn)有 Ruby 默認源(因為ruby 的軟件源 https://rubygems.org 使用的是亞馬遜的云服務(wù),所以被墻了莽鸿,需要更新一下 ruby 的源昧旨,使用下面2行代碼將官方的 ruby 源替換成國內(nèi)淘寶的源)。

$ gem sources --remove https://rubygems.org/

$ gem sources -a https://ruby.taobao.org/

2祥得、驗證新源是否替換成功

$ gem sources -l

如果替換成功兔沃,則顯示為:

*** CURRENT SOURCES ***

https://ruby.taobao.org/

注:此處為更新

由于淘寶的ruby源已經(jīng)好久沒更新了,感覺已經(jīng)被放棄级及,故我們可以用

gem sources -a https://gems.ruby-china.org/

3乒疏、安裝 CocoaPods

$ sudo gem install cocoapods

$ pod setup

注意:蘋果系統(tǒng)升級 OS X EI Capitan 后安裝改為:

$ sudo gem install -n /usr/local/bin cocoapods

$ pod setup

安裝可能遇到一下問題,下面列出幾個我遇到過的:

(1).

Performing a deep fetch of the `master` specs repo to improve future performance

因為pod steup的時候創(chuàng)建master這個庫饮焦,沒成功怕吴,之后就算移除鏡像重新安裝的話 默認是從matser庫里獲取,導(dǎo)致安裝不成功县踢。

解決辦法是移除master庫转绷,重新創(chuàng)建。

pod repo upadte --verbose

rm -rf ~/.cocoapods/repos/master

重新setup(需要較長時間)

pod setup

(2)

[!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master --progress

Cloning into 'master'...

fatal: unable to access 'https://github.com/CocoaPods/Specs.git/': SSLRead() return error -9806

這個可能跟網(wǎng)絡(luò)有關(guān)吧硼啤,可以重新setup

pod setup

也可以直接通過連接clone

1.通過finder的前往文件夾進行查看? ? ? ~/.cocoapods/repos

2.通過終端议经,進入到? ~/.cocoapods/repos

3.然后通過? git clone https://github.com/CocoaPods/Specs.git

(3)

Cloning into 'master'...

remote: Counting objects: 1167221, done.

remote: Compressing objects: 100% (222/222), done.

error: RPC failed; curl 56 SSLRead() return error -36| 384.00 KiB/s

fatal: The remote end hung up unexpectedly

fatal: early EOF

fatal: index-pack failed

終端輸入

xcode-select -p

查看Xcode本地路徑 (替換下面的)

sudo xcode-select -switch ?/Applications/Xcode 7.3.1.app/Contents/Developer

然后setup。

(4).

$ pod setup

Setting up CocoaPods master repo

[!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master

Cloning into ‘master’…

error: RPC failed; curl 18 transfer closed with outstanding read data remaining

fatal: The remote end hung up unexpectedly

fatal: early EOF

fatal: index-pack failed

試過以上所有解決辦法,還是沒有安裝成功煞肾,重新安裝(終極方法)咧织。

首先,刪除.cocoapods目錄籍救,在終端輸入以下命令:

sudo rm -rf ~/.cocoapods/

然后习绢,重新下載安裝,在終端輸入以下命令:

pod setup

(5)出現(xiàn)ERROR:? While executing gem ... (Gem::DependencyError)

Unable to resolve dependencies: cocoapods requires cocoapods-core (= 1.2.1), cocoapods-downloader (< 2.0, >= 1.1.3), cocoapods-trunk (< 2.0, >= 1.2.0), molinillo (~> 0.5.7), xcodeproj (< 2.0, >= 1.4.4), colored2 (~> 3.1), ruby-macho (~> 1.1)

執(zhí)行

sudo gem update --system

在終端中輸入:

sudo nvram boot-args="rootless=0"; sudo reboot

然后又出現(xiàn) ? ERROR:? While executing gem ... (Errno::EPERM)

Operation not permitted - /usr/bin/xcodeproj

然后你的電腦會重啟

之后再輸入

sudo?gem?install?cocoapods?-V

sudo gem install -n /usr/local/bin cocoapods

三蝙昙、CocoaPods的使用闪萄。

(1)可以用CocoaPods的搜索功能驗證一下。在終端中輸入:

pod search AFNetworking

(2)具體使用步驟(此處項目名稱為“podTest“):

方法一:

<1> cd 項目文件的位置奇颠;

<2> 在項目文件的根目錄下桃煎,執(zhí)行如下命令:

pod init

此命令會自動在項目文件的根目錄下,自動創(chuàng)建一個Podfile文件大刊。

然后为迈,在其中添加代碼

pod ‘AFNetworking’, ‘~>3.1.0’

<3> 執(zhí)行如下命令

pod install

方法2:

<1>.終端中,cd到項目總目錄

<2>.終端輸入 vim Podfile ,鍵盤輸入 i缺菌,進入編輯模式葫辐,輸入

platform :ios, '8.0'

pod ‘AFNetworking’, ‘~>3.1.0’

然后按Esc,并且輸入“ :”號進入vim命令模式伴郁,然后在冒號后邊輸入wq耿战,回車后發(fā)現(xiàn)PodTest項目總目錄中多一個Podfile文件。

<3>.終端cd到項目總目錄焊傅,然后輸入 pod install.

注:這時候可能會報錯剂陡,如

[!] The dependency `AFNetworking (~> 3.1.0)` is not used in any concrete target.

[!] Your Podfile has had smart quotes sanitised. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice.

修改方法很簡單,格式改為官網(wǎng)推薦的格式狐胎,打開Podfile文件鸭栖,改為以下兩種格式都可以。

寫法1:

platform :ios, '8.0'

#use_frameworks!個別需要用到它

target 'Podtest' do

pod 'AFNetworking', '~> 3.1.0''

end

寫法2:

platform :ios, '8.0'

#use_frameworks!個別需要用到它

def pods

pod 'AFNetworking', '~> 3.1.0''

end

target 'Podtest' do

pods

end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末握巢,一起剝皮案震驚了整個濱河市晕鹊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌暴浦,老刑警劉巖溅话,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異歌焦,居然都是意外死亡飞几,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門独撇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屑墨,“玉大人窟社,你說我怎么就攤上這事⌒髟浚” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵关炼,是天一觀的道長程腹。 經(jīng)常有香客問我,道長儒拂,這世上最難降的妖魔是什么寸潦? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮社痛,結(jié)果婚禮上见转,老公的妹妹穿的比我還像新娘。我一直安慰自己蒜哀,他們只是感情好斩箫,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撵儿,像睡著了一般乘客。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上淀歇,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天易核,我揣著相機與錄音,去河邊找鬼浪默。 笑死牡直,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纳决。 我是一名探鬼主播碰逸,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼阔加!你這毒婦竟也來了花竞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤掸哑,失蹤者是張志新(化名)和其女友劉穎约急,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苗分,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡厌蔽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了摔癣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奴饮。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡纬向,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出戴卜,到底是詐尸還是另有隱情逾条,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布投剥,位于F島的核電站师脂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏江锨。R本人自食惡果不足惜吃警,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啄育。 院中可真熱鬧酌心,春花似錦、人聲如沸挑豌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽氓英。三九已至完疫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間债蓝,已是汗流浹背壳鹤。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饰迹,地道東北人芳誓。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像啊鸭,于是被迫代替她去往敵國和親锹淌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

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

  • 項目組件化赠制、平臺化是技術(shù)公司的共同目標(biāo)赂摆,越來越多的技術(shù)公司推崇使用pod管理第三方庫以及私有組件,一方面使項目架構(gòu)...
    swu_luo閱讀 21,578評論 0 39
  • CocoaPods 是什么钟些? CocoaPods 是一個負責(zé)管理 iOS 項目中第三方開源庫的工具烟号。CocoaPo...
    朝洋閱讀 25,662評論 3 51
  • 2016.08 突然發(fā)現(xiàn),我的8月政恍,畫的都是小朋友呢~~~這真是汪拥,自己不知不覺形成了一個主題。哈哈哈~~~
    水晶雪梨閱讀 398評論 0 2
  • 如果我們的生活習(xí)慣性是一種軌道篙耗,以自我的角度迫筑,任何出現(xiàn)的問題都等于是脫軌宪赶,那么就要校正問題,消除問題脯燃,回到軌...
    阿輝Ahui閱讀 153評論 0 0
  • 我堅信我們應(yīng)該直面死亡搂妻,就像正視其他恐懼一樣,我希望通過去領(lǐng)會辕棚,且真正領(lǐng)會人類的處境——我們的有限性欲主,我們短暫的生...
    如歌的行板紫雪閱讀 304評論 3 2