搭建和使用pod私有庫

1.創(chuàng)建一個git倉庫由于存儲pod.spec文件

在git云平臺創(chuàng)建一個空的git倉庫,將該倉庫添加到本地pod管理。該倉庫不需要手動commit,僅使用pod命令添加處理即可。

//附:建議使用ssh key與遠程git倉庫通信。
pod repo add 5th-pods ssh://git@.../5th-pods.git

這樣在本地的pod repos中就有了5th-pods 與master文件夾,其中master就是CocoaPods官方的


屏幕快照 2019-03-13 上午9.48.50.png

2.使用Pod命令創(chuàng)建一個Pod工程

 pod lib create ProductName
#輸入項
What platform do you want to use?? [ iOS / macOS ]
 > iOS
What language do you want to use?? [ Swift / ObjC ]
 > ObjC
Would you like to include a demo application with your library? [ Yes / No ]
 > Yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
 > None
Would you like to do view based testing? [ Yes / No ]
 > No
What is your class prefix?
 > AB

使用pod lib create 可以創(chuàng)建一個標準的pod工程,將該工程添加到遠程git倉庫進行管理。屬于pod庫的代碼應(yīng)該放在ProductName/Classes 目錄下,使用示例代碼寫在Example的工程中。每個版本代碼修改完成并在Example中測試沒問題,且本地pod spec校驗沒問題,可修改.podspec 中的s.version版本號,并commit推送到遠端倉庫,打上與s.version同名的tag標簽。

3.Pod校驗及推送到私有庫

#本地校驗
pod spec lint ProductName.podspec --verbose --allow-warnings
#.podspec中有同時有私有庫和公有庫依賴
pod spec lint ProductName.podspec --verbose --allow-warnings --sources=ssh://git@git@.../5th-pods.git,https://github.com/CocoaPods/Specs.git
#推送到私有庫
pod repo push 5th-pods ProductName.podspec
#推送到私有庫(有私有庫依賴)
pod repo push 5th-pods ProductName.podspec --verbose --allow-warnings --sources=ssh://git@git@.../5th-pods.git,https://github.com/CocoaPods/Specs.git

附:推送到私有庫,使用的是遠程git代碼,一定要確保.podspec中g(shù)it指向的s.version分支已存在并打好了tag推送到remote。

推送成功后就會看到repos/5th-pods中會多出ProductName的文件夾,并且pod已經(jīng)幫我們管理好了s.version對應(yīng)的代碼版本。

4.使用私有庫的Podfile寫法

source 'https://github.com/CocoaPods/Specs.git'     #原CocoaPods倉庫
source 'ssh://git@git@.../5th-pods.git'  #私有pod倉庫

target "Exchange" do
    pod 'AFNetworking'  #公有庫
    pod 'PrivatePod', '0.01'  #私有庫
end

如果遇到?jīng)]有找到module問題可參考

#import <ABNetwork/ABNetwork.h>             Could not build module 'ABNetwork'
解決:選中項目target 選擇Build Setting 搜索 Allow Non-modular Includes in Framework Modules 將該項設(shè)為YES。
原因:module中引用了外部module。需要項目中設(shè)置允許在框架模塊中包含非模塊

更換pod版本號時,需要更新repos,下載最新的pod.podspec

pod repo update

5.使用Pod來管理代碼的好處

對于項目工程來說,代碼版本的管理直接影響著開發(fā)的效率,好的管理可以讓開發(fā)的效率倍增。
在沒有使用pod來管理之前,我們習(xí)慣都是整個大的工程的代碼都使用一個git倉庫來管理,git倉庫可以很方便的回滾到某一個commit。不足之處在于整個工程的代碼都會回滾,而且commit的版本過多,以至于開發(fā)人員無法辨別哪一個是最接近回滾需求的那一個。

這里使用pod來管理代碼就可以完美的避免該問題,每個pod都是一個整體,且僅是工程中可抽離的部分功能代碼。又有每個可運行的pod版本。因此,pod部分的代碼回滾僅需要修改版本號,而對主工程的其他代碼不會產(chǎn)生太大的影響。

5.pod依賴注意事項

pod庫會依賴其他第三方庫,如果兩個A、B兩個庫分別依賴C庫的0.1和0.2版本,而主工程需要同時依賴A庫和B庫,則pod加載會通不過。這個是需要注意的地方。

6.pod庫調(diào)試注意事項

剛剛改完pod中的代碼,就在Example中寫示例調(diào)試經(jīng)常會遇到運行報錯的情況,這里需要注意的是,Xcode不是每次都會從新編譯pod中的代碼,因此修改過pod中代碼后使用快捷鍵command+shift+k來清理一下,再從新編譯運行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。