入門
我們將使用pod lib create指令來展示創建一個完整的Pods的引導過程。所以讓我們從初始命令開始:
pod lib create MyLibrary
注意:你可以通過在--template-url=URL后面添加包含可用模板的git倉庫的URL使用你自己的 pod-template。
第二個注意:你可以點擊回車來選擇默認的選擇(也就是下劃線標注的選擇)。
Objective-C 或者 Swift
你被詢問的第一個問題是你想要在pod編譯中使用什么語言。對于所有的選擇,CocoaPods都將會將你的library配置為framework。
制作一個Demo應用
模板將會為你的library生成一個Xcode工程項目。這意味著你不用在Xcode上創建新項目了。
如果你想要有一個pod try MyLib指令能運行的示例工程,或者需要擁有能在應用里測試你自己library(交互檢驗,自定義字體等等)的,你應該說Yes。一個很好的標準就是“這個pod是否包含一個屏幕截圖”。那么,你需要有一個Demo。
選擇一個測試的framework
你應該測試你的library。測試要保證人們使用你的library的穩定性。在開源庫中這意味著人們可以改變來達到他們內心的期望。我們推薦使用一個測試framework而不是指望蘋果的,雖然他也包含測試。在Objective-C中我們列入了兩個流行的測試framework: Specta/Expecta 和 Kiwi。如果你不能決定,使用Specta/Expecta。
Specta/Expecta
一個輕量級的TDD / BDD framework 適用于 Objective-C 和 Cocoa。
GitHub repo
Kiwi
Kiwi是iOS開發的行為驅動開發庫。目標是提供一個設置和使用非常簡單的BDD庫。
GitHub repo
主要的區別在于Kiwi是一個Stubs/Mocks/Expectations一體化的方式,然而Specta/Expecta是一個通過不同Podspecs模塊化的方式。我們列入了所有必需的星系,以及配置你的測試framework到MyLib-Tests.pch,因此你不用將它們列入各個文件。
在Swift中,我們只提供了Quick/Nimble,因為他是最主流的測試庫。
基于視圖的測試
根據你編譯的庫,你會發現基于快照的測試是一種聰明的方式來驗證在你頁面上不同操作的結果(different actions on your views官方推薦在這里的庫)。我們推薦使用FBSnapShotTestCase。如果您正在使用Specta / Expecta,那么我們會添加一個Pod來改進語法。
Objective-C的前綴
通過包圍住一個Objective-C項目讓我們來知道你的前綴。這意味著我們可以使CocoaPods生成的所有類都適合您的樣式,所有從Xcode內部生成的類都將以您的前綴開頭。我們知道蘋果公司正在棄用前綴,但實際上它們仍然在Objective-C代碼庫中占有一席之地。
Pod庫創建模板
有了這些問題,我們在新創建的項目上運行pod安裝。 我們來看看結果:
$ 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
我們試圖將根文件夾中的數量保持在最小限度,您將看到以下文件:
- .travis.yml - travis-ci的一個配置文件。
- _Pods.xcproject - 你Pod的項目與Carthage支持的符號連接
- LICENSE - 證書 MIT License.
- MyLib.podspec - 你的library的Podspec.
- README.md - 默認的markdown的README文件.
- RemoveMe.swift/m - 保證初始化編譯工作的文件.
以及接下來的文件:
- Pod - 你library的類的地方
- Example - 生成的Demo項目 & 測試包
將你的Library放在一起
CocoaPods將直接打開你的項目;從這里你能編輯所有CocoaPods生成的文件。讓我們來看一下一個版本的Xcode:
- 您可以編輯您的Podspec元數據,這樣可以更改您的README和Podspec。
- 這是一個Demo Library,如果你不對這個說Yes,你將會失去它。
- 這是你之前選擇后創建的測試Spec。
- 這是Pods開發部分,是你Library實際工作的地方。看它下面的更多的信息。
- Pods用于配置項目的地方
這里值得一提的是,人們經常需要注意的一點,Swift的Library需要將其類聲明為公開,以便在您的示例庫中查看它們。
Pods的開發
開發Pods與正常的CocoaPods不同,因為它們是符號鏈接的文件,所以對它們進行編輯會改變原始文件,所以你可以從Xcode里對Library工作。你的Demo & 測試將需要使用#import <MyLib / XYZ.h>格式列出對頭文件的引用。
添加Travis CI
模板包含一個.travis.yml文件,將會運行項目內包含的默認的測試。如果您有GitHub的開源代碼,請在Travis CI上打開您的 profile,并打開庫的開關。
部署你的Library
所以你的Library準備好了。首先你應該檢查是否Podspec正確,因為你部署的時候不能有錯誤。這可以有兩種方法做到,pod lib lint 和 pod spec lint。兩個指令的不同點在于pod lib lint不用訪問網路,而pod spec lint檢查外部repo和相關標簽。如果您正在將一個開源庫部署到trunk上,則不能有CocoaPods警告。你Xcode內部可以有警告。您應該繼續開始根據getting started with trunk 指導來部署到公眾。
如果您正在部署到一個私人的Specs repo,您將需要添加repo。請參閱Private Specs Repos的指南來進行設置。 如果要部署到現有的私人Repo,請使用此命令進行部署
pod repo push SPEC_REPO *.podspec --verbose
完成
??