原文
如果你曾經(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ù)選框
- 選擇您要保存項目的目錄蕉斜。
- 取消選中“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”

然后打開終端
初始化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"
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)該看起來像:

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

鏈接開發(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”花枫。

- 接下來刻盐,在導(dǎo)航器中查看“RGB”項目; 你會看到在根級別有三個新框架。 要保持此區(qū)域的組織劳翰,突出顯示所有三個敦锌,右鍵單擊并選擇“New group from selection”將它們放在命名組中。 我會調(diào)用我的“Frameworks”佳簸。
現(xiàn)在Carthage已經(jīng)設(shè)置好了乙墙,讓我們添加CocoaPods。