CocoaPods是iOS,Mac下優秀的第三方包管理工具,類似於java的maven,給我們項目管理帶來了極大的方便。
個人或公司在開發過程中,會積累很多可以復用的代碼包,有些我們不想開源,又想像開源庫一樣在CocoaPods中管理它們,那麼通過私有倉庫來管理就很必要。
對於CocoaPods還不太熟悉的,建議參考一下唐巧的博客或者直接到CocoaPods的官網看看:https://cocoapods.org/
CocoaPods默認只能管理基於git管理的代碼,如果要使用svn或者mercurial管理代碼,則需要安裝一些插件
以下方法都是基於git來操作。
1.創建代碼倉庫
將自己寫的代碼推送到git服務器。如果代碼可以開源的話,可以用github來托管。參考我們所開源的代碼
2.給穩定的代碼打上版本tag,一般以版本號作為tag名
$ git tag -a
將tag推送到git服務器
$ git push --tags
這裡
3.創建spec文件
在shell中運行:
$ pod spec create
會在當前目錄創建
4.驗證spec文件有效性
spec文件修改完成後,運行
pod spec lint .podspec
根據輸出提示修改你的spec文件或者代碼,直到能pass.
5.創建spec repository(spec 倉庫)
除了上面創建的代碼倉庫,還需要創建一個spec倉庫,存放spec,目錄結構應該遵照以下的規范:
[plain] view plaincopy
├── Specs └── [SPEC_NAME] └── [VERSION] └── [SPEC_NAME].podspec
例:
├─Specs ├──QueryKit/ ├── 0.8.0 │ └── QueryKit.podspec ├── 0.8.1 │ └── QueryKit.podspec ├── 0.8.2 │ └── QueryKit.podspec └── 0.8.3 └── QueryKit.podspec URITemplate ├── 1.0.0 │ └── URITemplate.podspec └── 1.0.1 └── URITemplate.podspec
這裡的版本號要和代碼倉庫裡的tag一一對應。
將其推送到git服務器,參考我們開源的代碼
6.添加私有repo到CocoaPods中
$ pod repo add REPO_NAME SOURCE_URL
7.驗證私有repo安裝無誤:
$ cd ~/.cocoapods/repos/REPO_NAME $ pod repo lint .
後面如果還要往REPO_NAME裡添加新包,只需運行下面命令:
$ pod repo push REPO_NAME SPEC_NAME.podspec
如要刪除私有repo:
$ pod repo remove [name]
8.添加包到工程的Podfile中如下:
source 'https://github.com/agdsdl/Specs.git' source 'https://github.com/CocoaPods/Specs.git' platform :ios, "7.0" target "XXX" do pod 'DLSlideView','~>0.8.1' end
9. That's it!
接下來測試運行:
到工程目錄下運行
$ pod update
依賴包更新完畢後,打開workspace文件,點擊Go!
一些坑:
很容易把spec repository和代碼repository弄混,我一開始就在這裡掛起了好久。代碼repository是代碼倉庫,我們把包代碼上傳到這個倉庫。
spec repository是配置倉庫,所有的配置按照包名、版本號分門別類的存放在這個倉庫。這個倉庫只用來存放spec文件,不存放代碼。
spec repository可以放在本地,不用git服務器,但是貌似必須用git init初始化這個目錄。
詳細的一些東西可以看這裡
1到8步都只需在本機執行一次,團隊裡的其他人只需更新Podfile就可以直接使用私有倉庫了。