入門
我們將使用pod lib create指令來展示創(chuàng)建一個完整的Pods的引導(dǎo)過程巷懈。所以讓我們從初始命令開始:
pod lib create MyLibrary
注意:你可以通過在--template-url=URL后面添加包含可用模板的git倉庫的URL使用你自己的 pod-template。
第二個注意:你可以點(diǎn)擊回車來選擇默認(rèn)的選擇(也就是下劃線標(biāo)注的選擇)炮车。
Objective-C 或者 Swift
你被詢問的第一個問題是你想要在pod編譯中使用什么語言。對于所有的選擇肌割,CocoaPods都將會將你的library配置為framework跺株。
制作一個Demo應(yīng)用
模板將會為你的library生成一個Xcode工程項(xiàng)目苍日。這意味著你不用在Xcode上創(chuàng)建新項(xiàng)目了。
如果你想要有一個pod try MyLib指令能運(yùn)行的示例工程,或者需要擁有能在應(yīng)用里測試你自己library(交互檢驗(yàn)袱吆,自定義字體等等)的厌衙,你應(yīng)該說Yes。一個很好的標(biāo)準(zhǔn)就是“這個pod是否包含一個屏幕截圖”绞绒。那么婶希,你需要有一個Demo。
選擇一個測試的framework
你應(yīng)該測試你的library蓬衡。測試要保證人們使用你的library的穩(wěn)定性喻杈。在開源庫中這意味著人們可以改變來達(dá)到他們內(nèi)心的期望。我們推薦使用一個測試framework而不是指望蘋果的狰晚,雖然他也包含測試筒饰。在Objective-C中我們列入了兩個流行的測試framework: Specta/Expecta 和 Kiwi。如果你不能決定壁晒,使用Specta/Expecta瓷们。
Specta/Expecta
一個輕量級的TDD / BDD framework 適用于 Objective-C 和 Cocoa。
GitHub repo
Kiwi
Kiwi是iOS開發(fā)的行為驅(qū)動開發(fā)庫秒咐。目標(biāo)是提供一個設(shè)置和使用非常簡單的BDD庫谬晕。
GitHub repo
主要的區(qū)別在于Kiwi是一個Stubs/Mocks/Expectations一體化的方式,然而Specta/Expecta是一個通過不同Podspecs模塊化的方式携取。我們列入了所有必需的星系攒钳,以及配置你的測試framework到MyLib-Tests.pch,因此你不用將它們列入各個文件雷滋。
在Swift中夕玩,我們只提供了Quick/Nimble,因?yàn)樗亲钪髁鞯臏y試庫惊豺。
基于視圖的測試
根據(jù)你編譯的庫,你會發(fā)現(xiàn)基于快照的測試是一種聰明的方式來驗(yàn)證在你頁面上不同操作的結(jié)果(different actions on your views官方推薦在這里的庫)禽作。我們推薦使用FBSnapShotTestCase尸昧。如果您正在使用Specta / Expecta,那么我們會添加一個Pod來改進(jìn)語法旷偿。
Objective-C的前綴
通過包圍住一個Objective-C項(xiàng)目讓我們來知道你的前綴烹俗。這意味著我們可以使CocoaPods生成的所有類都適合您的樣式,所有從Xcode內(nèi)部生成的類都將以您的前綴開頭萍程。我們知道蘋果公司正在棄用前綴幢妄,但實(shí)際上它們?nèi)匀辉贠bjective-C代碼庫中占有一席之地。
Pod庫創(chuàng)建模板
有了這些問題茫负,我們在新創(chuàng)建的項(xiàng)目上運(yùn)行pod安裝蕉鸳。 我們來看看結(jié)果:
$ tree MyLib -L 2
MyLib
├── .travis.yml
├── _Pods.xcproject
├── Example
│ ├── MyLib
│ ├── MyLib.xcodeproj
│ ├── MyLib.xcworkspace
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Pods
│ └── Tests
├── LICENSE
├── MyLib.podspec
├── Pod
│ ├── Assets
│ └── Classes
│ └── RemoveMe.[swift/m]
└── README.md
我們試圖將根文件夾中的數(shù)量保持在最小限度,您將看到以下文件:
- .travis.yml - travis-ci的一個配置文件。
- _Pods.xcproject - 你Pod的項(xiàng)目與Carthage支持的符號連接
- LICENSE - 證書 MIT License.
- MyLib.podspec - 你的library的Podspec.
- README.md - 默認(rèn)的markdown的README文件.
- RemoveMe.swift/m - 保證初始化編譯工作的文件.
以及接下來的文件:
- Pod - 你library的類的地方
- Example - 生成的Demo項(xiàng)目 & 測試包
將你的Library放在一起
CocoaPods將直接打開你的項(xiàng)目潮尝;從這里你能編輯所有CocoaPods生成的文件榕吼。讓我們來看一下一個版本的Xcode:
- 您可以編輯您的Podspec元數(shù)據(jù),這樣可以更改您的README和Podspec勉失。
- 這是一個Demo Library羹蚣,如果你不對這個說Yes,你將會失去它乱凿。
- 這是你之前選擇后創(chuàng)建的測試Spec顽素。
- 這是Pods開發(fā)部分,是你Library實(shí)際工作的地方徒蟆⌒渤觯看它下面的更多的信息。
- Pods用于配置項(xiàng)目的地方
這里值得一提的是后专,人們經(jīng)常需要注意的一點(diǎn)划鸽,Swift的Library需要將其類聲明為公開,以便在您的示例庫中查看它們戚哎。
Pods的開發(fā)
開發(fā)Pods與正常的CocoaPods不同裸诽,因?yàn)樗鼈兪欠栨溄拥奈募詫λ鼈冞M(jìn)行編輯會改變原始文件型凳,所以你可以從Xcode里對Library工作丈冬。你的Demo & 測試將需要使用#import <MyLib / XYZ.h>格式列出對頭文件的引用。
添加Travis CI
模板包含一個.travis.yml文件甘畅,將會運(yùn)行項(xiàng)目內(nèi)包含的默認(rèn)的測試埂蕊。如果您有GitHub的開源代碼,請在Travis CI上打開您的 profile疏唾,并打開庫的開關(guān)蓄氧。
部署你的Library
所以你的Library準(zhǔn)備好了喉童。首先你應(yīng)該檢查是否Podspec正確堂氯,因?yàn)槟悴渴鸬臅r候不能有錯誤。這可以有兩種方法做到晶框,pod lib lint 和 pod spec lint畜埋。兩個指令的不同點(diǎn)在于pod lib lint不用訪問網(wǎng)路悠鞍,而pod spec lint檢查外部repo和相關(guān)標(biāo)簽咖祭。如果您正在將一個開源庫部署到trunk上么翰,則不能有CocoaPods警告。你Xcode內(nèi)部可以有警告码耐。您應(yīng)該繼續(xù)開始根據(jù)getting started with trunk 指導(dǎo)來部署到公眾。
如果您正在部署到一個私人的Specs repo束铭,您將需要添加repo。請參閱Private Specs Repos的指南來進(jìn)行設(shè)置懈万。 如果要部署到現(xiàn)有的私人Repo贷掖,請使用此命令進(jìn)行部署
pod repo push SPEC_REPO *.podspec --verbose
完成
??