iOS 新的依賴管理工具Carthage 使用

我們通常使用的依賴管理工具是CocoaPods,今天使用新的管理工具Carthage

為什么使用Carthage,非侵入性和去中心化

用過CocoaPods的都知道,CocoaPods對項目的侵入性較高,使用不便,而Carthage 輕耦合,更靈活.同是也是我的嘗鮮之舉

CocoaPods 是存在中心服務器的依賴管理工具,受限于中心服務器的穩(wěn)定性和資源質量, 尤其是網(wǎng)絡環(huán)境較差時比較明顯(當然他的優(yōu)勢也很明顯,資源豐富,維護人員眾多,但是說實話,一個pod的創(chuàng)建還是比較麻煩的)而 Carthage 是去中心化,只依賴于github或者git地址.沒有中心引起的另一個弊端就是: 需要自己去查找資源...

兩種使用體驗,兩種思想體系,如何選擇看自己.

Carthage介紹

Carthage 是由 Swift 語言寫的白翻,只支持動態(tài)框架性锭,只支持 iOS8+坯认。

工作流程:
  1. 創(chuàng)建一個Cartfile文件,寫好依賴哪些框架
  2. 執(zhí)行carthage update,拉取代碼,并且編譯成framework
  3. 把編譯好的.framework放到項目中,具體怎么放,后文詳述
目錄結構:
Cartfile
Cartfile.resolved
Carthage
    - Build
        - iOS
            - Alamofire.framework
        - Mac
            - Alamofire.framework
    - Checkouts
        - Alamofire
        - ...
xxx.xcodeproj
...

開始使用
  • 進入指定目錄下,創(chuàng)建一個工程,工程名稱為abc
  • 在根目錄創(chuàng)建一個Cartfile 文件
    touch Cartfile
  • 在Cartfile 文件中寫入
# 最低版本 2.0.3
# github "Mantle/Mantle"  >= 2.0.3

# 大于或等于 2.0.3 ,小于 最大版本
# github "realm/realm-cocoa" ~> 2.0.3

# 必須是2.0.3版本
# github "realm/realm-cocoa"  ==  2.0.3

# 默認使用最新版本
# github "realm/realm-cocoa" 

# 使用一個私有項目差购,在 "development" tag中,可以指定git地址,加上指定的tag,引申一下,如果某個工程沒有打tag,是無法使用Carthage的

git "git@10.0.50.71:/home/git/zzjs.git" "ZZContainerPODv2.0.3"

  • 使用 carthage update 更新資源,類似于pod install

  • 在根目錄下產(chǎn)生/Carthage/Build/iOS 中的.framework就是我們需要的

  • 下面到工程中引用這個打好的framework,只需要在對應 Target 中的 Build Setting 中的 Framework Search Path 項加入以下路徑,Xcode 便會自動搜索目錄下的 Framework:

$(SRCROOT)/Carthage/Build/iOS

  • 這時運行應該會崩潰,提示信息: image not found,有經(jīng)驗的同學都知道出現(xiàn)這個問題是因為動態(tài)庫, 只有引用找不到代碼導致的,我們在Build Prases 左上角的+號,添加New Run Script Phases,添加內容 /usr/local/bin/carthage copy-frameworks, 在Input Files中添加$(SRCROOT)/Carthage/Build/iOS/xxx.framework,運行即可
git 忽略

.gitignore 文件,增加忽略 Carthage 文件夾就行了

使用心得/出現(xiàn)的問題
  • 如何進入framework內部進行 單步調試

和framework 同時生成的還有符號文件.dYSM,我們先將文件拷貝到根目錄,然后在Build Phases

  • 不是所有的github庫支持

  • 如何自己尋找可用的庫
    首先使用pod search尋找到自己需要的庫,到github上,找到對應的庫,輸入github [github賬號名]/[對應倉庫名] [tag]
    例如AFN, 就是 github "AFNetworking/AFNetworking"
    我自己的庫 就是github "JXwilliamJi/MyCarthage"

如何讓自己的工程支持Carthage

  • 創(chuàng)建一個工程,github 創(chuàng)建一個遠程倉庫,或者在其他git遠程倉庫上創(chuàng)建

  • 創(chuàng)建一個打包framework的 target,名稱就是需要的名稱

  • Build Phases 中的Compile中添加所有的.m文件,在header中添加.h,調整需要暴露的到public 中

  • 到 framework target 的 BuildSettingsPackaging 中 將 Produce Module NameProduce Name修改成需要的名字

  • 如果你的工程中包含分類,你需要在Build SettingsLinkingOther Linker Flags里加上-all_load

  • 選擇 Manager Schemes, 選擇對應打包framework的target后面的share的勾勾上,如果不打勾,使用Carthage會提示你,沒有分享的target錯誤

  • 測試,到Cartfile 同級目錄 輸入 carthage build --no-skip-current ,產(chǎn)生framework 即成功

  • 將framework 放到一個新的工程測試,如果一切沒有問題

  • 最后一步,通過git 推送到遠程倉庫中,以后就可以使用了

具體請參考https://github.com/JXwilliamJi/MyCarthage

參考文檔

http://blog.csdn.net/u014599371/article/details/52801263
http://www.cnblogs.com/theswiftworld/p/carthage.html
http://www.isaced.com/post-265.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市吱涉,隨后出現(xiàn)的幾起案子刹泄,更是在濱河造成了極大的恐慌外里,老刑警劉巖怎爵,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盅蝗,居然都是意外死亡鳖链,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門墩莫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芙委,“玉大人,你說我怎么就攤上這事狂秦」嗦拢” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵裂问,是天一觀的道長侧啼。 經(jīng)常有香客問我,道長堪簿,這世上最難降的妖魔是什么痊乾? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮椭更,結果婚禮上哪审,老公的妹妹穿的比我還像新娘。我一直安慰自己虑瀑,他們只是感情好湿滓,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舌狗,像睡著了一般叽奥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上把夸,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天而线,我揣著相機與錄音,去河邊找鬼恋日。 笑死膀篮,一個胖子當著我的面吹牛,可吹牛的內容都是我干的岂膳。 我是一名探鬼主播誓竿,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谈截!你這毒婦竟也來了筷屡?” 一聲冷哼從身側響起涧偷,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎毙死,沒想到半個月后燎潮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡扼倘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年确封,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片再菊。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡爪喘,死狀恐怖,靈堂內的尸體忽然破棺而出纠拔,到底是詐尸還是另有隱情秉剑,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布稠诲,位于F島的核電站侦鹏,受9級特大地震影響,放射性物質發(fā)生泄漏吕粹。R本人自食惡果不足惜种柑,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望匹耕。 院中可真熱鬧聚请,春花似錦、人聲如沸稳其。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽既鞠。三九已至煤傍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嘱蛋,已是汗流浹背蚯姆。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留洒敏,地道東北人龄恋。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像凶伙,于是被迫代替她去往敵國和親郭毕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內容