Carthage使用心得-讓自己的項目支持Carthage

三方庫依賴極大的方便了我們的工程配置與管理

CocoaPods

CocoaPods發(fā)展到現(xiàn)在基本上已經(jīng)是ios開發(fā)的標(biāo)準(zhǔn)依賴工具
我們只需要安裝好pod后在項目中新建一個Podfile文件并且寫入你需要的三方框架,在pod install后即可完成配置,具體使用網(wǎng)上有很多教程,我這里就不多贅述.

Carthage

今天的豬腳出廠了!
那么,有些小猿們可能還不太清楚,這個Carthage它到底是個什么東西!
...讓我們一起來看看

Carthage
英 [?kɑ:θid?]  美 [?kɑrθ?d?] 
n.
迦太基(非洲北部燥爷,今突尼斯的奴隸制城邦,腓尼基人所建狠怨,公元146年被羅馬帝國所滅桌硫,見Punic Wars)
網(wǎng)絡(luò)
迦太基古城;  迦太基遺址;  迦太基城

...以上內(nèi)容來自百度翻譯...

Carthage的目標(biāo)是用最簡單的方式來管理Cocoa第三方框架

Carthage也是一個比較好用的三方框架管理工具,原理是自動幫你把工程編譯為Dynamic framework(動態(tài)庫),僅支持iOS8以上,相比Cocoa pods對項目更無侵入性

  • 你可以使用Homebrew來安裝Carthage
  • 安裝完homebrew后執(zhí)行下面命令
$ brew update
$ brew install carthage

在你的工程里創(chuàng)建一個Cartfile文件 ,并在里面寫上類似下面這句話

github "cwxatlm/MXScrollView"

執(zhí)行

$ carthage update

它會在你的工程目錄里生成一個Carthage的文件夾,里面有幫你自動生成的framework,大多數(shù)說的都是直接把framework拖到工程里就可以使用,但我的貌似這樣直接使用不了,具體的往下看
CocoaChina上有一篇非常好的Carthage入門文章,基本百度Carthage的第一個就是

讓你的項目支持Carthage

什么東西都是開頭難,如同一開始把我想把自己的開源代碼發(fā)布到pods一樣,也是各種查資料,最后成功trunk到pods服務(wù)器,然后自己pod下載傳上去的開源框架然后使用時,那個成就感確實是滿滿的.
  那么,怎么樣讓自己的的項目支持Carthage呢,一開始,我也不知道從何入手,然后我又是到處找資料,推酷上的這一篇使用Carthage發(fā)布Framework確實幫了我大忙,讓我知道了該如何入手.
  下面是我的實現(xiàn)方法.

讓已有工程支持Carthage

你可以這樣做.
  首先,假如你已經(jīng)有一個MyCarthage項目(該項目管理在Github上)

一般你會有一個頭文件瑰钮,這個頭文件的作用是導(dǎo)入所有需要用到的文件

工程目錄.png

MyCarthageView.h里面的方法是你要暴露的蓬坡,現(xiàn)在里面有一個方法
- (NSString *)getCarthageSkill
這個方法是你提供給外界調(diào)用的

MyCarthage.png

這個MyCarthage的框架我們已經(jīng)寫好了离斩,下一步就是framework了

創(chuàng)建一個framework

新建一個target

新建一個target.png

選擇framework,命名為MyCarthageFramework
他會自帶一個MyCarthageFramework.h的文件,這個文件的作用是告訴其他人我們引用了哪些頭文件,我們不要它自動生成的文件,刪除MyCarthageFramework.h

選擇framework.png
配置你的framework
  • 1.選擇你的工程
  • 2.選擇framework所在的Target
  • 3.選擇Build Phases
  • 4.點擊Header左下角的+號把你要暴露的頭文件添加到Public里面(默認(rèn)添加到Project里面,用鼠標(biāo)把它拽過去)
  • 5.在Compile source里面添加實現(xiàn)的.m文件
配置工程1.png

在framework的BuildSettings的Packaging里面,把Produce Module NameProduce Name改成MyCarthage

配置工程2.png
  • 如果你使用了類別,那么你需要在Build Settings的Linking的Other Linker Flags里加上-all_load
  • 如果你想你的工程支持bitcode,需要在Other C Flags 里加上-fembed-bitcode
分享你的工程

選擇 Manager Schemes

分享工程1.png

勾上shared(這樣Carthage就可以編譯你的工程)

分享工程2.png

到這里,基本上你已經(jīng)成功了,那么我們來驗證一下,我相信到這里你已經(jīng)安裝好了Carthage了(什么?并沒有?...那你先去裝一個先吧...),安裝好Carthage后,我們cd到項目文件夾,運行

$ carthage build --no-skip-current

...
  命令運行完成后,你會發(fā)現(xiàn)你的項目文件夾里面多了一個Carthage文件夾
  Carthage->Build->iOS->MyCarthage.framework!
  各位小伙伴們,我們需要的framework,它就這么出來了,好,下面我們來新建一個工程,測試一下看能否正確運行.
...
新建一個test工程,兩種方式導(dǎo)入

1.

把framework拖進(jìn)去,點擊3個copy,然后導(dǎo)入頭文件

然后在 target->Build Phases ->左上角+號 ->New Copy Files Phase 然后在Copy Files下 Destination選擇Frameworks ->添加你自己的動態(tài)庫 .

我們首先編譯一下,沒報錯


導(dǎo)入framework.png

2.

1).還是先把framework拖進(jìn)自己文件夾(如果framework和工程同屬一總文件夾這一步可以省略,拖進(jìn)來復(fù)制主要是保證這個framework不會丟失,如自己的項目使用了Carthage,"Cartahge"文件夾就在工程目錄里,其實不用再拖一遍)
2).在工程目錄目錄下的->General(向下滑動少許)->Embedded Binaries->點左下角+號添加剛才的framework(如果直屬目錄下沒有就點擊Add Other去相應(yīng)目錄下添加)

Embedded Binaries.png

編譯效果如上一種方式

以上兩種方式也適用于你自己使用Carthage中的framework

ok,我們來運行一下


控制臺.png

Good!控制臺成功的打印了我們需要的信息,我們成功了,別慌,要給別人使用的話你還需要最后一步,給你的工程打上tag,push上去(記得要把工程shemes的配置文件也勾上push上去)
例如

$ git tag 1.0.0
$ git push --tags
以上對于創(chuàng)建自己的可共享動態(tài)庫教程已結(jié)束

下面我們來試一試是否成功,
ok,新建一個Cartfile文件,寫上下面這句話,并執(zhí)行carthage update就可以使用Carthage安裝你的代碼了,是不是迫不及待去試試你自己的了呢

github "cwxatlm/MyCarthageDemo"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抽高,一起剝皮案震驚了整個濱河市判耕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翘骂,老刑警劉巖壁熄,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帚豪,死亡現(xiàn)場離奇詭異,居然都是意外死亡草丧,警方通過查閱死者的電腦和手機狸臣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昌执,“玉大人烛亦,你說我怎么就攤上這事《埃” “怎么了煤禽?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長岖赋。 經(jīng)常有香客問我檬果,道長,這世上最難降的妖魔是什么贾节? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任汁汗,我火速辦了婚禮,結(jié)果婚禮上栗涂,老公的妹妹穿的比我還像新娘知牌。我一直安慰自己,他們只是感情好斤程,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布角寸。 她就那樣靜靜地躺著,像睡著了一般忿墅。 火紅的嫁衣襯著肌膚如雪扁藕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天疚脐,我揣著相機與錄音亿柑,去河邊找鬼。 笑死棍弄,一個胖子當(dāng)著我的面吹牛望薄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播呼畸,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼痕支,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蛮原?” 一聲冷哼從身側(cè)響起卧须,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后花嘶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笋籽,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年察绷,在試婚紗的時候發(fā)現(xiàn)自己被綠了干签。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡拆撼,死狀恐怖容劳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闸度,我是刑警寧澤竭贩,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站莺禁,受9級特大地震影響留量,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哟冬,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一楼熄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浩峡,春花似錦可岂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至纸淮,卻和暖如春平斩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咽块。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工绘面, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人侈沪。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓飒货,卻偏偏與公主長得像,于是被迫代替她去往敵國和親峭竣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

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