【譯】Carthage的使用

簡介

Cathage 一直致力于成為給 Cocoa 應用添加框架最簡單的方式。
它的使用流程如下:

  1. 創(chuàng)建一個 Cathage 乍惊,在里面列出你的項目要使用的第三方框架;
  2. 運行 Cathage撬碟, Cathage 會獲取并創(chuàng)建你列出的所有框架;
  3. 把生成的 .frameword 二進制文件拖到你的工程文件中惶傻。

Cathage 幫你創(chuàng)建第三方依賴其障、提供二進制的 framework 文件励翼,并且不會改變你的項目架構和創(chuàng)建。 Cathage 在你使用的過程中并不會修改的你工程文件和你的項目設置抚笔。

Cathage 與 CocoaPods 的不同

CocoaPods 是存在已久的 Cocoa 的第三方依賴管理方式殊橙,在此基礎上為什么還要使用 Cathage 狱从?

首先,CocoaPods 會自動為你的應用與第三方依賴創(chuàng)建和更新一個 Xcode workspace敞葛;Carthage 使用 xcodebuild 創(chuàng)建二進制 framework 与涡,添加和使用這此框架是用戶自己操作的。CocoaPods 使用上更簡單氨肌,而 Carthage 更靈活酌畜,耦合性更低。

從 CocoaPods 的 README 可以看出它有以下的目標:

通過創(chuàng)建一個集中式的生態(tài)系統(tǒng)使發(fā)現(xiàn)和管理第三方框架更便捷恳守。

相反贩虾, Carthage 是一個非集中式的第三方管理工具。它在工程文件中沒有集中的列表伊群,這可以大大降低維護的難度,避免集中列表的一些錯誤導致的編譯失敗奔则。然而蔽午,發(fā)現(xiàn)第三方框架也是一個麻煩的事情,用戶必須要到 GitHub 的趨勢頁面去查找或者去類似的網(wǎng)站抽莱。

CocoaPods 的工程文件中一定要有 podspec 文件骄恶,在 podspec 文件中用戶要填寫元數(shù)據(jù)和它創(chuàng)建的方式。Carthage 用 xcodebuild 去創(chuàng)建第三方框架虐呻。它不會把你的第三方依賴放在一個單獨的 workspace 中去管理寞秃,你寫的第三方框架一定要包含自己的 Xcode 項目用來描述怎么去生成和使用。

總之朗涩,Carthage 的目標就是成為管理第三方框架第簡單的工具绑改,它可以在不使用 Xcode 的情況下完成它的任務,也不會讓框架作者做額外的工作厘线。但 CocoaPods 也確實提供了很多非常好而且 Carthage 介于成本考慮可能永遠也不會有的功能。

安裝 Carthage

安裝 Carthage 有以下幾種方法:

  • 通過安裝程序安裝:下載并運行 Carthage.pkg 覆履,根據(jù)軟件提示安裝即可费薄;
  • Homebrew安裝:使用 brew install carthage 命令安裝(注意:如果你安裝過二進制版本的 Carthage楞抡,你要先刪除 /Library/Frameworks/CarthageKit.framework);
  • 從GigHub源安裝:如果你想安裝最新版本(注意最新版可以不太穩(wěn)定)凳厢,直接克隆Carthage 在GigHub上的 master 分支,并運行 make install 即可治泥,僅支持 Xcode 8.0及以上(Swift支持 2.3 版本遮精,現(xiàn)在還不支持 3.0 以上的版本)。

為應用添加第三方框架

如果你安裝了 Carthage 准脂,你就可以為你的項目添加第三方框架了檬洞。注意 Carthage 只支持動態(tài)庫,動態(tài)庫只在 iOS 8 及以上才支持(任意版本的 OS X 都支持動態(tài)庫)湾戳。

開始使用

針對 iOS, tvOS 或者 watchOS 的使用方法:

  1. 創(chuàng)建一個 Cartfile 并列出你想使用的第三方庫澎灸;
  2. 使用 carthage update 命令,Carthage 就會把第三方框架更新到 Carthage/Checkouts 文件夾中,然后挨個編譯糜颠;
  3. 在你的工程文件的 “General” 選項卡中萧求,把你的框架從 Carthage/Build 文件夾拖到 “Linked Frameworks and Libraries” 區(qū)域內(nèi);
  4. 在你的工程文件 “Build Phases” 選項卡中元旬,點 "+" 然后選擇 “New Run Script Phase” 創(chuàng)建一個新的運行腳本來聲明你的 shell(比如:bin/sh)守问,把下面的內(nèi)容粘貼到 shell 中:
/usr/local/bin/carthage copy-frameworks

然后在 “Input Files” 中添加你要使用的框架的路徑耗帕,比如:

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

當這些調(diào)試信息被復制到產(chǎn)品目錄中, 無論你的應用停在哪個斷點体啰,Xcode 都能夠 symbolicate 你的堆棧信息。這也能夠讓你用第三方的調(diào)試工具進行調(diào)試柒莉。

無論你的應用提交到 AppStore 還是打包測試沽翔,Xcode 都會復制這些文件到你應用的 .xcarchive 沙盒中 dSYMs 文件夾的子目錄中。

升級第三方框架

如果你修改了 Cartfile 文件西潘,或者你想使用第三方框架的最新版哨颂,只要再運行一次 carthage update 就行了。

如果你只是想更新某一個或者某幾個品姓,只要用空格隔開就行了箫措,比如:

carthage update Box

或者

carthage update Box Result

Cartfile

Cartfile 是用來描述第三方框架的斤蔓,它嚴格遵守 Ordered Graph Data Language 的語法,任何標準的 OGDL 工具都能解析它弦牡。

第三方框架聲明分為兩部分:基礎部分和版本需求部分驾锰。

基礎部分

如果使用 GigHub 的倉庫(GitHub.com 或者 GitHub Enterprise),使用時必須加入 github 關鍵字耻瑟,比如:

github "ReactiveCocoa/ReactiveCocoa" # GitHub.com
github "https://enterprise.local/ghe/desktop/git-error-translations" # GitHub Enterprise

其他 git 倉庫要加 git 關鍵字赏酥,如下:

git "https://enterprise.local/desktop/git-error-translations2.git"

版本需求

Carthage 支持以下幾種版本聲明:

  1. >= 1.0 大于等于版本 1.0
  2. ~> 1.0 兼容版本 1.0
  3. == 1.0 必須是版本 1.0
  4. some-branch-or-tag-or-commit 針對一個明確的 Git 項目

如果沒有版本聲明今缚,就代表任何版本都可以使用。

兼容性是根據(jù)語義化版本規(guī)范確定的姓言,任何大于或者等于版本 1.5.1 小于版本 2.0 的,都被認定 兼容于 1.5.1囱淋。

但是根據(jù)語義化版本規(guī)范妥衣,任何 0.x.y 的版本都會在運行中崩潰,所以0.x 的版本沒有遵守語義化版本規(guī)范蜂筹,如果你定義了 0.1.1 的版本芦倒,那么 兼容的版本就是 0.1.2,而不是 0.2麻裳。

Cartfile 示例

# Require version 2.3.1 or later
github "ReactiveCocoa/ReactiveCocoa" >= 2.3.1

# Require version 1.x
github "Mantle/Mantle" ~> 1.0    # (1.0 or later, but less than 2.0)

# Require exactly version 0.4.1
github "jspahrsummers/libextobjc" == 0.4.1

# Use the latest version
github "jspahrsummers/xcconfigs"

# Use the branch
github "jspahrsummers/xcconfigs" "branch"

# Use a project from GitHub Enterprise
github "https://enterprise.local/ghe/desktop/git-error-translations"

# Use a project from any arbitrary server, on the "development" branch
git "https://enterprise.local/desktop/git-error-translations2.git" "development"

# Use a local project
git "file:///directory/to/project" "branch"
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末津坑,一起剝皮案震驚了整個濱河市疆瑰,隨后出現(xiàn)的幾起案子狞谱,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伶跷,死亡現(xiàn)場離奇詭異秘狞,居然都是意外死亡烁试,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門靖诗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鄙才,你說我怎么就攤上這事促绵。” “怎么了浓冒?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵稳懒,是天一觀的道長糖驴。 經(jīng)常有香客問我,道長辙谜,這世上最難降的妖魔是什么感昼? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任定嗓,我火速辦了婚禮蜕琴,結果婚禮上,老公的妹妹穿的比我還像新娘宵溅。我一直安慰自己凌简,他們只是感情好,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布恃逻。 她就那樣靜靜地躺著雏搂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寇损。 梳的紋絲不亂的頭發(fā)上凸郑,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機與錄音矛市,去河邊找鬼芙沥。 笑死,一個胖子當著我的面吹牛而昨,可吹牛的內(nèi)容都是我干的救氯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼配紫,長吁一口氣:“原來是場噩夢啊……” “哼径密!你這毒婦竟也來了?” 一聲冷哼從身側響起躺孝,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤享扔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后植袍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惧眠,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年于个,在試婚紗的時候發(fā)現(xiàn)自己被綠了氛魁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡厅篓,死狀恐怖秀存,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情羽氮,我是刑警寧澤或链,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站档押,受9級特大地震影響澳盐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜令宿,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一叼耙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粒没,春花似錦筛婉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拦惋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間安寺,已是汗流浹背厕妖。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挑庶,地道東北人言秸。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓软能,卻偏偏與公主長得像,于是被迫代替她去往敵國和親举畸。 傳聞我的和親對象是個殘疾皇子查排,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

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

  • Carthage v0.26.2(原文鏈接) Carthage的目標是用最簡單的方式來管理Cocoa第三方框架。 ...
    iOSLee閱讀 3,590評論 0 7
  • PS:本文旨在介紹Carthage的使用抄沮,為初學者提供一個Carthage學習的入口跋核,高手如不喜歡請繞行~ 在項目...
    小松wolf閱讀 5,989評論 5 9
  • 文檔地址https://github.com/Carthage/Carthage release v0.20.0...
    指尖彈灰閱讀 4,494評論 2 4
  • 從秦始皇算起,古往今來叛买,歷朝歷代砂代,不知涌現(xiàn)出了多少位皇帝。這些皇帝有的雄才大略率挣,有的禮賢下士刻伊,有的睿智圣明,也有一...
    果昊媽媽閱讀 466評論 0 0
  • 一大早大家都高興地起來了椒功。吃過早餐后捶箱,今天去新神洞游玩。洞里風景不錯动漾,就是呆久了點就會覺得很冷丁屎。廷鍵自已...
    紫彤閱讀 288評論 0 0