iOS-Carthage 安裝以及使用 (新版本)2018-01-24

想到iOS/OS X項目的依賴管理溯祸,第一個想到的一定是大名鼎鼎的CocoaPods颂翼。下面是Carthage介紹里面的講述兩者的不同之處:

CocoaPods (默認(rèn))自動建立和更新一個Xcode workspace卫旱,用來管理你的項目和所有依賴佑吝。Carthage使用xcodebuild來編譯出二進制庫,剩下的集成工作完全交給開發(fā)人員鳖擒。

CocoaPods使用起來方便溉浙,Carthage更加靈活并且對現(xiàn)有項目沒有太多的侵略性。

CocoaPods希望建立一個生態(tài)系統(tǒng)蒋荚,可以更加方便的發(fā)現(xiàn)和集成第三方代碼庫戳稽。Carthage希望變成一個去中心化的依賴管理系統(tǒng),不提供中心化的項目列表期升,減少維護成本和單點失敗的概率惊奇。不過這樣給開發(fā)人員尋找項目帶來不便互躬。

CocoaPods的項目需要配置podspec文件,包含了項目和第三方庫的信息赊时。Carthage并不使用類似的配置文件吨铸,第三方庫的依賴關(guān)系是通過Xcode項目來配置的行拢。


安裝Carthage

1. 直接下載安裝包:地址祖秒, 不過文件host在amazon S3上面,我嘗試過幾次未果舟奠。竭缝。。

2. 使用Homebrew

brew update

brew installcarthage


編譯第三方庫

1. 創(chuàng)建Cartfile列出你要使用的第三方庫信息, 下面是一個簡單的例子

構(gòu)造兩個庫:

github "AFNetworking/AFNetworking" ~> 3.0 github "Monsory/Monsory"http://沒有指定版本號 默認(rèn)是最新版本

2. Run carthage update

carthage update

3. 這時會生成如下的文件目錄

|-Carthage

|---Build

|-----Mac

|-------Mantle.framework

|---------Versions

|-----------A

|-------------Headers

|-------------Modules

|-------------Resources

|-------ReactiveCocoa.framework

|---------Versions

|-----------A

|-------------Headers

|-------------Modules

|---------------ReactiveCocoa.swiftmodule

|-------------Resources

|-----iOS

|-------Mantle.framework

|---------Headers

|---------Modules

|---------_CodeSignature

|-------ReactiveCocoa.framework

|---------Headers

|---------Modules

|-----------ReactiveCocoa.swiftmodule

|---------_CodeSignature

|---Checkouts

|-----libextobjc

|-------Configuration

|---------Base

|-----------Configurations

|-----------Targets

|---------Mac OS X

|---------iOS

|-------Tests

|-------extobjc

|-------extobjc.xcodeproj

|---------project.xcworkspace

|---------xcshareddata

|-----------xcschemes

|-----xcconfigs

|-------Base

|---------Configurations

|---------Targets

|-------Mac OS X

|-------iOS

Carthage/Checkouts目錄:從github獲取的源代碼

Carthage/Build目錄:編譯出來的Framework二進制代碼庫


4. 打開項目沼瘫,在項目的某個Target -> Build Phases -> Link Library with Libraries抬纸,將Carthage/Build目錄中希望導(dǎo)入的Framework庫拖拽進去。


5. 添加編譯的額外腳本耿戚,點擊“+” -> New Run Script Phase


添加腳本

/usr/local/bin/carthage copy-frameworks

添加"Input Files"

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

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

如果你使用的是0.11之前的的版本

如果你使用的是0.11之后的的版本


6. 在項目中使用第三方庫

#import"AppDelegate.h"#import@interface AppDelegate ()@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

? ? // Override point for customization after application launch.? ? ? ?

? ? return YES;

}


7. ,編譯通過,運行項目


大功告成胆剧!

Carthage使用了一種極為精簡的方式來管理第三方庫维贺,將源碼編譯成Framework的二進制文件,然后讓開發(fā)人員來負(fù)責(zé)library的管理、導(dǎo)入等等矮燎。比起CocoaPods減少了對現(xiàn)有項目的侵入性,使用起來也挺方便荷辕。


首先昧甘,CocoaPods會直接創(chuàng)建和修改項目的workspace配置,一切都是為了便捷呜呐,我們只需要修改pod文件并不需要過多的關(guān)心其他事情就斤,CocoaPods創(chuàng)建的是高度集成的項目。

而Carthage的特點是靈活蘑辑,耦合度不高洋机,集成時不需要集成相應(yīng)的project,不需要創(chuàng)建workspace,而僅僅需要依賴打包好的framework文件即可洋魂。


其次槐秧,CocoaPods相對來說功能要比Carthage多很多,在國內(nèi)由于墻的原因忧设,我們都改成了淘寶的源來更新CocoaPods刁标,相信我,如果你不翻墻址晕,很多東西還是不能用膀懈,更新不下來,版本錯誤等一系列原因會讓你不得不放棄一些看起來非常好用的第三方庫谨垃。而Carthage似乎只需要從github上下載項目即可启搂,配置更是簡單硼控,使用的時候項目干干凈凈,所有的第三方庫就像蘋果原生的framework一樣美好胳赌,從此你不再需要擔(dān)新CocoaPods的庫用不了牢撼,不用花大量時間去修復(fù)用CocoaPods打包時出現(xiàn)的各種問題,如果你用過CocoaPods疑苫,當(dāng)你開始用Carthage的時候熏版,你會愛上這個工具的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捍掺,一起剝皮案震驚了整個濱河市撼短,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挺勿,老刑警劉巖曲横,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異不瓶,居然都是意外死亡禾嫉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門蚊丐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熙参,“玉大人,你說我怎么就攤上這事吠撮∽鸲瑁” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵泥兰,是天一觀的道長弄屡。 經(jīng)常有香客問我,道長鞋诗,這世上最難降的妖魔是什么膀捷? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮削彬,結(jié)果婚禮上全庸,老公的妹妹穿的比我還像新娘。我一直安慰自己融痛,他們只是感情好壶笼,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雁刷,像睡著了一般覆劈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天责语,我揣著相機與錄音炮障,去河邊找鬼。 笑死坤候,一個胖子當(dāng)著我的面吹牛胁赢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播白筹,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼智末,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了遍蟋?” 一聲冷哼從身側(cè)響起吹害,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤螟凭,失蹤者是張志新(化名)和其女友劉穎虚青,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體螺男,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡棒厘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了下隧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奢人。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖淆院,靈堂內(nèi)的尸體忽然破棺而出何乎,到底是詐尸還是另有隱情,我是刑警寧澤土辩,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布支救,位于F島的核電站,受9級特大地震影響拷淘,放射性物質(zhì)發(fā)生泄漏各墨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一启涯、第九天 我趴在偏房一處隱蔽的房頂上張望贬堵。 院中可真熱鬧,春花似錦结洼、人聲如沸黎做。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒸殿。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間伟桅,已是汗流浹背敞掘。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留楣铁,地道東北人玖雁。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像盖腕,于是被迫代替她去往敵國和親赫冬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

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

  • Carthage v0.26.2(原文鏈接) Carthage的目標(biāo)是用最簡單的方式來管理Cocoa第三方框架溃列。 ...
    iOSLee閱讀 3,566評論 0 7
  • 比如大名鼎鼎的ReactCocoa劲厌。切到早期版本,你根本找不到podspec听隐,說明它從未官方支持過CocoaPod...
    曹俊_413f閱讀 2,840評論 5 7
  • 相見時難別亦難补鼻, 寒潮來時百花殘。 半百之后再聚首雅任, 鬢角如霜眼昏花风范。 余生但求身體好, 不炫身家話健康沪么。 回看來...
    第一閑人閱讀 171評論 0 1
  • 總有人高聲呼喊我愛你然后逃離你 世界上最遙遠(yuǎn)的距離是從熟悉到陌生
    舊人_98ab閱讀 145評論 0 0
  • function 普通執(zhí)行 this指向的是window 而new的時候 this 是指向這個實例的 要不停的看...
    軒轅無楓閱讀 135評論 0 0