用Carthage創(chuàng)建您的第一個iOS框架(翻譯)

原文

如果你曾經(jīng)試圖創(chuàng)建自己的iOS框架尽狠,但是其中有諸多不便-管理依賴和編寫測試不方便效诅,本教程將引導(dǎo)您從頭到尾創(chuàng)建您的第一個iOS框架敛劝,以便您可以創(chuàng)建一個自己的。
我們將構(gòu)建一個框架斋配,暴露一個名為RGBUIColor(red:green:blue)的函數(shù),該函數(shù)返回根據(jù)這些值創(chuàng)建的新UIColor灌闺。 我們將使用Swift構(gòu)建它艰争,使用Carthage作為依賴項管理器。 我們的框架將使用Carthage桂对,CocoaPods或git子模塊甩卓。
開始吧!

設(shè)置Xcode項目

  • 選擇 File → New → Project.
  • 選擇 iOS → Framework & Library→Cocoa Touch Library
  • 點擊 “Next” 并填寫選項提示. 確定選中了 “Include Unit Tests” 復(fù)選框
Paste_Image.png
  • 選擇您要保存項目的目錄蕉斜。
  • 取消選中“Create Git repository on My Mac”逾柿,之后手動設(shè)置
  • 單擊“Create”缀棍,項目將在Xcode中打開。
  • 點擊File→ Save As Workspace机错,將workspace文件和xcodeproj文件保存在同一目錄下爬范,使用相同的名稱。 我們把項目放在一個工作空間弱匪,因為我們將添加我們的Carthage依賴作為子模塊; 它們必須位于Xcode的工作區(qū)中才能構(gòu)建它們青瀑。
  • 關(guān)閉項目
  • 打開workspace
  • 選擇“Manage Schemes”,勾上后面的“shared”
Paste_Image.png
Paste_Image.png

然后打開終端

初始化Git

cd到你的項目目錄

  • 運行git init初始化一個空的存儲庫萧诫。
  • 創(chuàng)建一個.gitignore將會阻止一些討厭的Xcode和依賴文件斥难,我們不想在git中跟蹤。
    這里有一個標(biāo)準(zhǔn)的Swift項目.gitignore與幾個修改帘饶。 我們添加了.DS_Store并刪除了fastlane和額外的注釋蘸炸。
## OS X Finder
.DS_Store

## Build generated
build/
DerivedData

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata

## Other
*.xccheckout
*.moved-aside
*.xcuserstate
*.xcscmblueprint

## Obj-C/Swift specific
*.hmap
*.ipa

# Swift Package Manager
.build/

# Carthage
Carthage/Build

添加Carthage和依賴關(guān)系

  • 在項目目錄中創(chuàng)建一個名為Cartfile的文件和它的運行時依賴關(guān)系。 我們將添加Curry尖奔。
github "thoughtbot/Curry"
  • 創(chuàng)建Cartfile.private搭儒。 它將包含私有依賴,如我們的測試框架提茁。 我們將使用QuickNimble淹禾。
github "Quick/Quick"
github "Quick/Nimble"

創(chuàng)建 bin/setup腳本。 它用于給我們的貢獻(xiàn)者(和我們)一個簡單的方法來設(shè)置項目和依賴茴扁。

mkdir bin
touch bin/setup
chmod +x bin/setup

打開bin/setup并填寫:

#!/usr/bin/env sh

if ! command -v carthage > /dev/null; then 
  printf 'Carthage is not installed.\n' 
  printf 'See https://github.com/Carthage/Carthage for install instructions.\n' exit 1
fi
carthage update --platform iOS --use-submodules --no-use-binaries

在這個腳本中铃岔,我們確保用戶已安裝Carthage 并運行carthage update命令來安裝iOS依賴項。
我們使用--use-submodules峭火,以便我們的依賴關(guān)系作為子模塊添加毁习。 這允許用戶在Carthage之外使用我們的框架,如果他們想要的話卖丸。 我們使用--no-use-binaries纺且,以便我們的依賴關(guān)系建立在我們的系統(tǒng)上。
使用bin/setup創(chuàng)建稍浆,讓我們運行它载碌,以便Carthage將下載你的依賴。

  • 打開終端運行bin/setup
    現(xiàn)在我們需要設(shè)置你的項目來構(gòu)建和鏈接新的依賴項衅枫。

向工作區(qū)添加依賴關(guān)系

因為我們的依賴是子模塊嫁艇,我們需要將它們添加到我們的工作區(qū)。
打開Carthage/Checkouts弦撩,并將每個依賴項.xcodeproj添加到工作空間的根目錄步咪。 他們可以從Finder拖動到Xcode項目的導(dǎo)航器。

當(dāng)你完成它應(yīng)該看起來像:


Alt text
Alt text

鏈接運行時依賴關(guān)系

  • 在導(dǎo)航器中選擇“RGB”益楼,并在中間側(cè)邊欄選擇“RGB”目標(biāo)猾漫,選擇“構(gòu)建階段”選項卡并展開“鏈接庫二進(jìn)制文件”部分点晴。
  • 單擊“+”圖標(biāo),并從Curry-iOS目標(biāo)中選擇Curry.framework静袖。
  • 單擊“Add”
Alt Text
Alt Text

鏈接開發(fā)依賴

  • 從中間側(cè)邊欄選擇“RGB測試”目標(biāo)觉鼻。
  • 使用與之前相同的過程,將Quick和Nimble框架添加到此目標(biāo)的“Link binary with libraries”部分队橙。
    當(dāng)向每個目標(biāo)添加依賴項時坠陈,Xcode會自動將它們添加到“Build Settings”選項卡下的“Framework Search Paths”。 我們可以從“RGB”和“RGBTests”目標(biāo)中刪除這些捐康,因為Xcode將它們視為隱式依賴關(guān)系仇矾,因為它們在同一個工作空間中。
  • 選擇目標(biāo)解总,找到“Framework Search Paths”設(shè)置贮匕,突出顯示它,然后按鍵盤上的“backspace”花枫。
Alt Text
Alt Text
  • 接下來刻盐,在導(dǎo)航器中查看“RGB”項目; 你會看到在根級別有三個新框架。 要保持此區(qū)域的組織劳翰,突出顯示所有三個敦锌,右鍵單擊并選擇“New group from selection”將它們放在命名組中。 我會調(diào)用我的“Frameworks”佳簸。

現(xiàn)在Carthage已經(jīng)設(shè)置好了乙墙,讓我們添加CocoaPods。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末生均,一起剝皮案震驚了整個濱河市听想,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌马胧,老刑警劉巖汉买,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異漓雅,居然都是意外死亡录别,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進(jìn)店門邻吞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人葫男,你說我怎么就攤上這事抱冷。” “怎么了梢褐?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵旺遮,是天一觀的道長赵讯。 經(jīng)常有香客問我,道長耿眉,這世上最難降的妖魔是什么边翼? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮鸣剪,結(jié)果婚禮上组底,老公的妹妹穿的比我還像新娘。我一直安慰自己筐骇,他們只是感情好债鸡,可當(dāng)我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著铛纬,像睡著了一般厌均。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上告唆,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天棺弊,我揣著相機(jī)與錄音,去河邊找鬼擒悬。 笑死模她,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的茄螃。 我是一名探鬼主播缝驳,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼归苍!你這毒婦竟也來了用狱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤拼弃,失蹤者是張志新(化名)和其女友劉穎夏伊,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吻氧,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡溺忧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了盯孙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲁森。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖振惰,靈堂內(nèi)的尸體忽然破棺而出歌溉,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布痛垛,位于F島的核電站草慧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏匙头。R本人自食惡果不足惜漫谷,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蹂析。 院中可真熱鬧舔示,春花似錦、人聲如沸识窿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喻频。三九已至缩宜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間甥温,已是汗流浹背锻煌。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留姻蚓,地道東北人宋梧。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像狰挡,于是被迫代替她去往敵國和親捂龄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,781評論 2 361

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