手把手教你使用CocoaPods打包靜態庫
今天我們就來談一談如何使用CocoaPods打包靜態庫。一般情況下我們使用CocoaPods來管理第三方開源類庫,但是我們也有可能存在這樣的需求:開發一個用CocoaPods來管理依賴關係的靜態庫給其他人使用,但是又不想公開原始碼,比如:SDK,那麼我們就需要把他打成靜態庫。這篇文章以一個依賴AFNetworking 3.0的靜態庫來講述如何建立使用了CocoaPods的靜態庫以及打包的過程。
靜態庫的建立方式
- 通過Xcode提供的專案模板
- 使用CocoaPods自動建立
手動建立
- 在Xcode直接建立一個Cocoa Touch Static Library;
- 建立Podfile檔案;
- 執行pod install完成整個專案的搭建;
- 手動建立Demo程式,使用pod新增對私有靜態庫的依賴,再次執行pod install完成Demo專案的搭建。
使用CocoaPods自動建立
以Core-YLJNetworking專案為例:
- 請確保已經正確安裝CocoaPods環境,之後步驟均建立在此基礎上進行,安裝請參考CocoaPods使用篇;
開啟終端,執行 pod lib create Core-YLJSNetworking, 接下來需要確認5個問題,如下:
第一個問題是我們需要選擇的開發語言,這裡我們選擇ObjC;
第二個問題是詢問是否包含一個Demo專案,一般會選擇Yes,不過這裡我選擇了No…
具體說明你也可以參考官方文件 Using Pod Lib Create,接下來終端正在自動執行pod install (如果沒有自動執行情看終端輸出的錯誤資訊並修正好相關語法 後,在終端通過 cd 命令進入到 Example 目錄下,手動執行 pod install 來讓你的 Demo 專案安裝依賴項)我們的專案自動建立好了,通過xcworksapce開啟專案,我們的目錄結構是這樣的(如果建立的時候選擇了Include a demo
application的結構稍有不同):
- 開啟 Core-YLJNetworking.podspec 檔案,並修改配置資訊,如下:
Pod::Spec.new do |s|
s.name = "Core-YLJNetworking"
s.version = "0.1.0"
s.summary = "A short description of Core-YLJNetworking."
s.description = "Description of Core-YLJNetworking."
s.homepage = "https://github.com/KosonGou/Core-YLJNetworking"
# s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
s.license = 'MIT'
s.author = { "KosonGou" => "[email protected]" }
s.source = { :git => "/Users/KosonGou/Documents/Workspace/Library/Core-YLJNetworking_3.0.0", :tag => "0.1.0" }
s.platform = :ios, '7.0'
s.requires_arc = true
s.source_files = 'Core-YLJNetworking/Classes/**/*'
s.resource_bundles = {
'Core-YLJNetworking' => ['Core-YLJNetworking/Assets/*.png']
}
s.public_header_files = 'Pod/Classes/**/*.h'
s.frameworks = 'SystemConfiguration','MobileCoreServices','CoreGraphics'
s.dependency 'AFNetworking', '~> 3.0'
end
s.version 表示的是當前類庫的版本號;
s.source 表示當前類庫源;
s.sources_files 表示類庫的原始檔存放目錄;
s.resource_bundles 表示資原始檔存放目錄;
s.frameworks 表示類庫依賴的framework;
s.dependency 表示依賴的第三方類庫;
更多詳細說明,請參照 Podspec Syntax Reference 。
5、新增程式碼類,需要值得注意的是:我們的 podspec 檔案裡面的指定的 s.source_files 是在 Pod/Classes 目錄下面,所以小夥伴的類檔案一定不要存放錯了哦!程式碼新增完畢後,可以執行一下 pod install 來讓 demo 程式載入剛剛新建立的類了。這裡簡單貼一下我的程式碼吧。

6、如果你也包含了 Demo 專案的話,那就需要在專案中加入使用示例了。
7、提交原始碼,打 tag。
git add .
git commit -a -m 'Core-YLJNetworking v0.1.0'
git tag -a 0.1.0 -m 'Core-YLJNetworking v0.1.0'
8、使用 pod lib lint 驗證類庫是否符合 pod 的要求,可以使用 –allow-warnings 來忽略一些警告。
pod lib lint Core-YLJNetworking.podspec --allow-warnings
9、打包。此時你需要安裝一個 CocoaPods 打包外掛 CocoaPods-Packager,安裝命令如下:
sudo gem install cocoapods-packager
安裝完成之後,就可以愉快地繼續打包了,在終端輸入如下命令(切記,此時你應該在你的專案根目錄下,即 podspec 檔案所在目錄):

注意了,如果命令後面加條尾巴 –library 則表示打包成 .a 檔案,如果不帶,則會打包成 .framework 檔案。而 –force 則表示強制覆蓋之前存在的檔案。下面 讓我們一起來見證奇蹟吧,專案目錄下面多了一個 Core-YLJNetworking-0.1.0 的資料夾,這個便是外掛幫我們打好的靜態庫了,而 .framework 檔案是放在 了 ios 目錄下面。

10、最後,小夥伴們可以使用打包好的靜態庫了。直接把靜態庫拖入到專案中,然後,加入指定的依賴專案即可。