閱讀本文之前假定讀者已經(jīng)具有了能夠使用 cocoapods 管理包依賴和能夠通過(guò)編寫 podspec 文件并上傳過(guò)自己的 cocoapods 共公庫(kù)到 GitHub.并能夠通過(guò) pod search 和 pod install 安裝自己的 cocoapods 庫(kù).
私有庫(kù)分為遠(yuǎn)程私有庫(kù)和本地私有庫(kù),本地私有庫(kù)顧名思義就是在自己電腦上搞個(gè)文件夾放自己庫(kù)的代碼,并通過(guò)pod install從本地引入你的庫(kù)文件到工程中來(lái).
1 如果創(chuàng)建一個(gè)本地私有庫(kù)
在終點(diǎn)上通過(guò)pod lib create YVBase(你的庫(kù)名稱) 這個(gè)命令會(huì)從 cocoapods 在 github 上創(chuàng)建的模板工程 clone 到你本地 ,然后你根據(jù)提示創(chuàng)建一個(gè)模板工程,然后根據(jù)提示進(jìn)行操作
01 What platform do you want to use?? [ iOS / macOS ]
//是創(chuàng)建一個(gè) iOS 還是 macOS 的工程
02 What language do you want to use?? [ Swift / ObjC ]
//使用 ObjC 還是 Swift 開放語(yǔ)言
03 Would you like to include a demo application with your library? [ Yes / No ]
//是否導(dǎo)入一個(gè)實(shí)例程序就是俗稱的 demo ,其實(shí)就是在這個(gè) demo 上去安裝你自己的私有庫(kù) 然后測(cè)試你的私有庫(kù)
04 Which testing frameworks will you use? [ Specta / Kiwi / None ]
//是否選擇一個(gè)測(cè)試的框架 ,筆者一般選 None 我一般是將已經(jīng)寫好的功能抽取成組件,所以只需要管理組件 能夠?qū)⒋a抽離出來(lái)就行
05 Would you like to do view based testing? [ Yes / No ] 類似于 Xcode 自帶的 UI Tests框架 筆者很少用,需要的可以輸入 YES
06 What is your class prefix? 類前綴 我一般以 YV 開頭,筆者待過(guò)好幾家公司 BM BK SK CY 一般都是以公司項(xiàng)目名稱為前綴 YV 代表一喂智能科技有限公司
最終會(huì)生成一個(gè)Xcode 工程 并且可以打開并運(yùn)行
2 這個(gè)私有庫(kù)由那幾部分組成
我們一般將自己寫的庫(kù)文件放到 YVBase 這個(gè)文件夾里 ,并在 YVBase.podspec里指定 s.source_files 和 s.resources ,這樣執(zhí)行pod install時(shí)就會(huì)檢查podspec里的描述信息,然后將 YVBase 里的代碼和資源文件 引入到工程中
對(duì)于如何編寫podspec 文件描述 不是本文所講內(nèi)容,具體可以cocoapods 官方文檔 (https://guides.cocoapods.org/making/specs-and-specs-repo.html)
3 往本地私有庫(kù)添加一些自己寫的代碼 并在測(cè)試工程中調(diào)試
01 將 SKToast 這個(gè)類放到 YVBase/Classes 文件夾下邊 ,然后打開 demo 工程 并執(zhí)行pod install命令 將添加的文件引入到 demo 工程中
02 打開測(cè)試工程 查看 Pods 下邊文件 找到自己添加的 SKToast 這個(gè)類文件
03 如果文件路徑在 podspec 中編寫的沒(méi)有錯(cuò),是可以通過(guò)pod install引入到工程中的,這個(gè)時(shí)候可以再 YVBase-Example 測(cè)試工程里,去使用你本地私有庫(kù) YVBase 里的 SKToast 這個(gè)類
編寫完測(cè)試代碼后可以編譯下代碼并運(yùn)行到模擬器中
4 注意細(xì)節(jié) 我們的demo 工程和 YVBase 是在同一個(gè)目錄下邊的,所以在工程里 podfile 文件已經(jīng)設(shè)置好了 pod 'YVBase'的路徑為 path ==> '../' , 當(dāng)另一個(gè)工程需要引入YVBase 這個(gè)庫(kù)時(shí)需要注意路徑問(wèn)題,本地私有庫(kù)需要指定文件再電腦上的絕對(duì)路徑, 不知道文件具體路徑的可以 將 YVBase 代碼倉(cāng)庫(kù)拖拽到終端上 可以查看
這樣我在另一個(gè)工程里的 podfile 中 可以指定 pod 'YVBase' :path => '/Users/dzb/YVBase' ,然后執(zhí)行 pod install 就可以將我放在 /Users/dzb/YVBase這個(gè)私有庫(kù)代碼引入到需要的工程中去.
以下是具體的使用參考
這是我放在本地的組件庫(kù) , 方便本地開發(fā)使用,也可以上傳到 git 私有倉(cāng)庫(kù)作為遠(yuǎn)程私有庫(kù)供其他開發(fā)人員使用(私有倉(cāng)庫(kù)需要其他開發(fā)人員具有查看 修改 提交的權(quán)限 可以使 https 和 ssh 等形式訪問(wèn))
順風(fēng)車官網(wǎng)完全采用組件化開發(fā) 主工程只有一個(gè) Appdelegate 寫了一初始化的代碼