Carthage-》管理Cocoa第三方框架。

1417677929536508.png

Cocoa的依賴管理器,我們已經有了CocoaPods,非常好用,那么為什么還要創建這樣一個項目呢?本文翻譯自Carthage的Github的README.md,帶大家來了解一下這個工具有何不同之處。
Carthage的目標是用最簡單的方式來管理Cocoa第三方框架。
基本的工作流如下:
創建一個Cartfile,包含你希望在項目中使用的框架的列表

運行Carthage,將會獲取列出的框架并編譯它們

將編譯完成的.framework
二進制文件拖拽到你的Xcode項目當中

Carthage編譯你的依賴,并提供框架的二進制文件,但你仍然保留對項目的結構和設置的完整控制。Carthage不會自動的修改你的項目文件或編譯設置。
Carthage與CocoaPods的不同
CocoaPods是已存在很長時間的Cocoa依賴管理器,那么為什么要創建Carthage呢?
首先,CocoaPods默認會自動創建并更新你的應用程序和所有依賴的Xcode workspace。Carthage使用xcodebuild
來編譯框架的二進制文件,但如何集成它們將交由用戶自己判斷。CocoaPods的方法更易于使用,但Carthage更靈活并且是非侵入性的。
CocoaPods的目標在它的README文件描述如下:
…為提高第三方開源庫的可見性和參與度,創建一個更中心化的生態系統。

與之對照,Carthage創建的是去中心化的依賴管理器。它沒有總項目的列表,這能夠減少維護工作并且避免任何中心化帶來的問題(如中央服務器宕機)。不過,這樣也有一些缺點,就是項目的發現將更困難,用戶將依賴于Github的趨勢頁面或者類似的代碼庫來尋找項目。
CocoaPods項目同時還必須包含一個podspec
文件,里面是項目的一些元數據,以及確定項目的編譯方式。Carthage使用xcodebuild
來編譯依賴,而不是將他們集成進一個workspace,因此無需類似的設定文件。不過依賴需要包含自己的Xcode工程文件來描述如何編譯。
最后,我們創建Carthage的原因是想要一種盡可能簡單的工具——一個只關心本職工作的依賴管理器,而不是取代部分Xcode的功能,或者需要 讓框架作者做一些額外的工作。CocoaPods提供的一些特性很棒,但由于附加的復雜性,它們將不會被包含在Carthage當中。
安裝Carthage
Carthage提供OS X平臺的pkg安裝文件,你可以從Github的最新release中找到,按照引導一步步安裝即可。
如果你想安裝最新的開發版本(可能存在穩定性和兼容性的問題),你只需要clone本倉庫的master分支,然后運行make install
.
添加框架到應用程序
安裝完Carthage后,你能夠使用它來添加框架到你的項目。注意Carthage只支持動態框架,而后者只存在于iOS 8以上(以及任意版本的OS X)。
開始使用:
創建一個Cartfile,將你想要使用的框架列在里面

運行carthage update
,將獲取依賴文件到一個Carthage.checkout
文件夾,然后編譯每個依賴

在你的應用程序target的“General”設置標簽中的“Embedded Binaries”區域,將框架從Carthage.build
文件夾拖拽進去。

在這個過程當中,Carthage將創建一些build artifacts,其中最重要的是Cartfile.lock
文件,里面將列出每個框架的具體版本,確保你提交了這個文件到版本控制工具里面(如Git、SVN),因為每個用到項目的人都需要它來編譯相同版本的框架。
完成上面的步驟并提交你的修改,項目的其他用戶就只需要獲取該倉庫并執行carthage bootstrap
就能使用你所添加的框架。
添加框架到單元測試或另一個框架
使用Carthage添加框架到任意目標的方法,和添加到應用程序差不多。主要的不同在于框架是如何設置并鏈接到Xcode的。
因為非應用程序目標沒有“Embedded Binaries”設置區域,你需要將編譯完成后的框架拖拽到“Link Binaries With Libraries”的區域里。
在某些稀有案例中,你也許會想要復制每個依賴到已編譯的項目中(比如,在外部框架中嵌入依賴,或確保依賴在測試工具中正常顯示)。想要達到這個目的,你需要創建一個新的“Copy Files”編譯選項和“Frameworks”組,然后將框架的引用添加到里面。
升級框架
如果你改動了你的Cartfile,或者你想升級到框架的最新版本(服從于你指定的需求版本),執行carthage update
命令可以達到目的。
讓你的框架支持Carthage
Carthage只正式支持動態框架,動態框架能夠在任何版本的OS X上使用,但只能在iOS 8及以上版本使用。
因為Carthage擁有非中心化的包列表,以及沒有項目指定的編譯設置,大多數框架應該能自動編譯。
分享你的Xcode schemes
Carthage將只從你的.xcodeproj
中標記為已分享的Xcode schemes來編譯。如果你想檢查編譯是否成功,執行carthage build --no-skip-current
命令,然后檢查Carthage.build
文件夾。
如果當執行命令但有scheme沒有被編譯,打開Xcode并確定對應scheme被標記為“Shared”,以便Carthage能夠發現它。
解決編譯失敗
如果你在執行carthage build --no-skip-current
時編譯失敗,嘗試執行xcodebuild -scheme SCHEME -workspace WORKSPACE build
或xcodebuild -scheme SCHEME -project PROJECT build
(將其中的大寫單詞換成你項目的對應名稱),然后觀察是否有相同的失敗發生,這應該能生成足夠的失敗信息來解決問題。
穩定版發布的標簽
Carthage使用語義化標簽來發布穩定版本。如1.2.0
,如帶有字母則是不受支持的版本(如1.2-alpha-1
).
CarthageKit
大多數carthage命令行工具的功能都封裝在一個名為CarthageKit的框架中。
如果你希望將Carthage作為另一個工具的一部分,或者希望擴展Carthage的功能,可以看看CarthageKit的源碼,檢查API是否符合你的需求。
授權協議
Carthage使用MIT開源協議授權發布。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,115評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,234評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,621評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,822評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,380評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,128評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,319評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,548評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,048評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,285評論 2 376

推薦閱讀更多精彩內容

  • Carthage v0.26.2(原文鏈接) Carthage的目標是用最簡單的方式來管理Cocoa第三方框架。 ...
    iOSLee閱讀 3,626評論 0 7
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,158評論 4 61
  • 文檔地址https://github.com/Carthage/Carthage release v0.20.0...
    指尖彈灰閱讀 4,525評論 2 4
  • 在前端開發中我們都會遇到跨域請求的問題,因為JavaScript的同源策略,這是一個很重要的安全性限制,這一策略是...
    Cathy_Liu閱讀 268評論 0 1
  • 我 下午提早回辦公室,現場沒那么多事,也莫名就想早點回去。一到辦公室,就被老板叫去,他坐在沙發上,讓我坐在他旁邊。...
    梅子Mey閱讀 283評論 0 5