Carthage 與 CocoaPods

原文鏈接

1.為何要使用管理工具管理項(xiàng)目的依賴關(guān)系

我們?cè)陂_發(fā)過程中會(huì)用到(依賴于)其他第三方庫(kù)裳涛,這些庫(kù)或框架還有可能依賴于其他庫(kù)或者框架木张,手動(dòng)管理這些庫(kù)或者框架非常麻煩,首先我們需要下載這些庫(kù)或者框架端三,然后還要考慮版本兼容性問題舷礼,需要手動(dòng)導(dǎo)入一些依賴包,還好有CocoaPods和Carthage工具管理項(xiàng)目依賴關(guān)系郊闯。

2.使用CocoaPods工具管理依賴
CocoaPods是非常好用的第三方依賴管理工具妻献,它于2011年發(fā)布蛛株,經(jīng)過這幾年的發(fā)展,已經(jīng)非常完善育拨。CocoaPods支持項(xiàng)目中采用Objective-C或swift語(yǔ)言谨履。CocoaPods會(huì)將第三方庫(kù)的源代碼編譯為靜態(tài)庫(kù).a文件或者動(dòng)態(tài)框架.framework文件的形式,并將它們添加到項(xiàng)目中熬丧,建立依賴關(guān)系笋粟。

使用方法

pod search MBProgressHUD

或者進(jìn)入CocoaPods 官網(wǎng)https://cocoapods.org/,輸入第三方庫(kù)名稱析蝴,可以便捷的查看相應(yīng)庫(kù)的使用方法矗钟。

然后通過終端 cd 進(jìn)入文件 ---> vim Podfile ---> 編輯保存 ---> pod install

Carthage工具

CocoaPods是一個(gè)非常棒的工具,但我們還有另外一個(gè)選擇——Carthage,它是一個(gè)輕量級(jí)的項(xiàng)目依賴管理工具嫌变。Carthage主張“去中心化”和“非侵入性”吨艇。
CocoaPods搭建了一個(gè)中心庫(kù),第三方庫(kù)被收入到該中心庫(kù)腾啥,所以沒有收錄的第三方庫(kù)是不能使用CocoaPods管理的东涡,這就是所謂的”中心化“思想。而Carthage沒有這樣的中心庫(kù)倘待,第三方庫(kù)基本上都是從GitHub或者私有g(shù)it庫(kù)中下載的疮跑,這就是“去中心化”。

另外凸舵,CocoaPods下載第三方庫(kù)后祖娘,會(huì)將其編譯成靜態(tài)鏈接庫(kù)或者動(dòng)態(tài)框架文件,這種做法會(huì)修改Xcode項(xiàng)目屬性配置依賴關(guān)系啊奄,這就是所謂的”侵入性“渐苏。而Carthage下載成功后,會(huì)將第三方庫(kù)編譯為動(dòng)態(tài)框架菇夸,由開發(fā)人員自己配置依賴關(guān)系琼富,Carthage不會(huì)修改Xcode項(xiàng)目屬性,這就是所謂的”非侵入性“庄新。

Carthage安裝
第一種是在https://github.com/Carthage/Carthage/releases 網(wǎng)站下載已經(jīng)編譯好的安裝包Carthage.pkg,然后進(jìn)行安裝鞠眉。
第二種是通過Homebrew工具進(jìn)行安裝。Homebrew是用來管理OS X系統(tǒng)下安裝包的工具择诈,使用非常之便利械蹋。下面主要介紹第二種。

第一步:打開終端:

brew list 

第二步:如果沒有安裝Homebrew工具羞芍,終端會(huì)提示brew命令無法執(zhí)行小染,然后執(zhí)行如下指令安裝homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

第三步:執(zhí)行如下指令,安裝Carthage

brew install carthage

第四步:執(zhí)行如下指令芋绸,查詢Carthage是否安裝成功

brew list   //如果出現(xiàn)carthage牙肝,說明安裝成功

Carthage使用
第一步:終端輸入如下指令:

cd  /Users/admin/Desktop/exercise/Carthage (cd后面的是你創(chuàng)建工程的路徑,直接將工程拖到終端中即可自動(dòng)生成)

第二步:與cocoapods一樣饺律,Carthage同樣需要一個(gè)類似podfile文件,我們可以命名為Cartfile(這里的名字可以任意命名)卡乾,然后終端輸入如下指令酣胀,進(jìn)入該文件中:

vim Cartfile

第三步:進(jìn)入Cartfile文件后與cocoapods的使用方式一樣,輸入i全度,進(jìn)入編輯模式煮剧,然后執(zhí)行下面的指令,輸入wq:進(jìn)行保存将鸵,然后就退出Cartfile文件了:

github "https://github.com/AFNetworking/AFNetworking.git"
或者 github "AFNetworking / AFNetworking" "master"
(ps:二者任選其一即可勉盅,如果采用第二種方式,指定的依賴庫(kù)一般為github上的"用戶名/項(xiàng)目名"顶掉,如果不是很確定名稱草娜,可以輸入第三方的名稱,到github上確認(rèn)即可痒筒,使用第一種方式其實(shí)是項(xiàng)目的下載鏈接宰闰,同樣,如果不是很確定簿透,可以到github上復(fù)制粘貼下來即可)

和Podfile類似移袍,在Carthage文件中也可以指定依賴庫(kù)的版本
~>3.0  表示大于等于3.0版本,小于下一個(gè)主版本老充,即4.0版本
>=3.0  表示大于等于3.0版本
==3.0  表示等于3.0版本

第四步:終端輸入如下指令葡盗,下載文件

carthage update --platform iOS

第五步:執(zhí)行完上面的操作后,打開項(xiàng)目啡浊,會(huì)發(fā)現(xiàn)項(xiàng)目中多了一個(gè)Carthage文件夾觅够,在它下面又有倆個(gè)子文件夾Build和Checkouts,
Build目錄中存放編譯好的framework文件,
Checkouts目錄是下載的第三方庫(kù)源代碼

打開工程巷嚣,選擇General,找到Linked Frameworks And Libraries蔚约,點(diǎn)擊添加出現(xiàn)下圖彈框:

點(diǎn)擊Add Other,找到需要添加的庫(kù)依次導(dǎo)入即可,這里需要導(dǎo)入的庫(kù)是AFNetworking.framework涂籽。

第六步:選擇Build phases ,點(diǎn)擊左上角的加號(hào)苹祟,如下圖:



選擇 New Run Script phase ,在Run Script部分的腳本區(qū)域輸入:

/usr/local/bin/carthage copy-frameworks

然后將路徑添加到 Input Files中:

$(SRCROOT)/Carthage/Build/iOS/AFNetworking.framework

最終效果圖如下:

編譯工程即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末评雌,一起剝皮案震驚了整個(gè)濱河市树枫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌景东,老刑警劉巖砂轻,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異斤吐,居然都是意外死亡搔涝,警方通過查閱死者的電腦和手機(jī)厨喂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庄呈,“玉大人蜕煌,你說我怎么就攤上這事∥芰簦” “怎么了斜纪?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)文兑。 經(jīng)常有香客問我盒刚,道長(zhǎng),這世上最難降的妖魔是什么绿贞? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任因块,我火速辦了婚禮,結(jié)果婚禮上籍铁,老公的妹妹穿的比我還像新娘涡上。我一直安慰自己,他們只是感情好寨辩,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布吓懈。 她就那樣靜靜地躺著,像睡著了一般靡狞。 火紅的嫁衣襯著肌膚如雪耻警。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天甸怕,我揣著相機(jī)與錄音甘穿,去河邊找鬼。 笑死梢杭,一個(gè)胖子當(dāng)著我的面吹牛温兼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播武契,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼募判,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了咒唆?” 一聲冷哼從身側(cè)響起届垫,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎全释,沒想到半個(gè)月后装处,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浸船,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年妄迁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寝蹈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡登淘,死狀恐怖箫老,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情形帮,我是刑警寧澤槽惫,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布周叮,位于F島的核電站辩撑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏仿耽。R本人自食惡果不足惜合冀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望项贺。 院中可真熱鬧君躺,春花似錦、人聲如沸开缎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奕删。三九已至俺泣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間完残,已是汗流浹背伏钠。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谨设,地道東北人熟掂。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像扎拣,于是被迫代替她去往敵國(guó)和親赴肚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

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

  • 1二蓝、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,985評(píng)論 3 119
  • 這幾個(gè)月來比較喪侣夷,對(duì)于什么事情都提不起興致來横朋,一面想著去做一些有意義的事情,一面又拔劍四顧心茫然百拓,覺得似乎并沒有什...
    看見流星閱讀 193評(píng)論 0 0
  • 因?yàn)槁糜卧谕馇俣ВI的書在家里晰甚,抱團(tuán)學(xué)習(xí)又分了組,同修們都好積極决帖,組長(zhǎng)麗冰老師好負(fù)責(zé)厕九,管理好細(xì)密,每天學(xué)習(xí)有內(nèi)容地回、有作...
    曾秋萍閱讀 532評(píng)論 0 4
  • 1、銀行存款细睡,活期谷羞、定存等 這個(gè)東西的收益率的確很低,甚至?xí)瓦^CPI溜徙,但是可以配置月收入的20%左右用十二存單法...
    鄒圈圈閱讀 195評(píng)論 0 0
  • 大四醫(yī)學(xué)生一枚湃缎,考研準(zhǔn)備中。 感覺自己每次說起考研心情都很沉重蠢壹,學(xué)醫(yī)已是不易嗓违,考研更是難上加難。當(dāng)決定了考研之后就...
    好姑娘五毒俱全閱讀 258評(píng)論 3 2