專案管理:CocoaPods建立私有倉庫
CocoaPods是iOS,Mac下優秀的第三方包管理工具,類似於java的maven,給我們專案管理帶來了極大的方便。
個人或公司在開發過程中,會積累很多可以複用的程式碼包,有些我們不想開源,又想像開源庫一樣在CocoaPods中管理它們,那麼通過私有倉庫來管理就很必要。
對於CocoaPods還不太熟悉的,建議參考一下唐巧的部落格或者直接到CocoaPods的官網看看:https://cocoapods.org/
CocoaPods預設只能管理基於git管理的程式碼,如果要使用svn或者mercurial管理程式碼,則需要安裝一些外掛
以下方法都是基於git來操作。
1.建立程式碼倉庫
將自己寫的程式碼推送到git伺服器。如果程式碼可以開源的話,可以用github來託管。參考我們所開源的程式碼
2.給穩定的程式碼打上版本tag,一般以版本號作為tag名
1 |
$ git tag -a
|
將tag推送到git伺服器
1 |
$ git push --tags
|
這裡一般是類似1.0.2的版本號。版本號的規範參考這裡
3.建立spec檔案
在shell中執行:
1 |
$ pod spec create
|
會在當前目錄建立.podspec檔案,建立的檔案是個完整的配置模板,根據字面意思以及註釋,大體上都能弄明白。不清楚的地方可以到https://guides.cocoapods.org/making/specs-and-specs-repo.html看看,github上也有很多開原始碼可以參考。
4.驗證spec檔案有效性
spec檔案修改完成後,執行
1 |
pod spec lint .podspec
|
根據輸出提示修改你的spec檔案或者程式碼,直到能pass.
5.建立spec repository(spec 倉庫)
除了上面建立的程式碼倉庫,還需要建立一個spec倉庫,存放spec,目錄結構應該遵照以下的規範:
[plain] view plaincopy
1 2 3 4 |
├── Specs
└── [SPEC_NAME]
└── [VERSION]
└── [SPEC_NAME].podspec
|
例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
├─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一一對應。
6.新增私有repo到CocoaPods中
1 |
$ pod repo add REPO_NAME SOURCE_URL
|
7.驗證私有repo安裝無誤:
1 2 |
$ cd ~/.cocoapods/repos/REPO_NAME
$ pod repo lint .
|
後面如果還要往REPO_NAME裡新增新包,只需執行下面命令:
1 |
$ pod repo push REPO_NAME SPEC_NAME.podspec
|
如要刪除私有repo:
1 |
$ pod repo remove [name]
|
8.新增包到工程的Podfile中如下:
9. That's it!
接下來測試執行:
到工程目錄下執行
1 |
$ pod update
|
依賴包更新完畢後,開啟workspace檔案,點選Go!
一些坑:
很容易把spec repository和程式碼repository弄混,我一開始就在這裡掛起了好久。程式碼repository是程式碼倉庫,我們把包程式碼上傳到這個倉庫。
spec repository是配置倉庫,所有的配置按照包名、版本號分門別類的存放在這個倉庫。這個倉庫只用來存放spec檔案,不存放程式碼。
spec repository可以放在本地,不用git伺服器,但是貌似必須用git init初始化這個目錄。
1到8步都只需在本機執行一次,團隊裡的其他人只需更新Podfile就可以直接使用私有倉庫了。