本地私有庫不能滿足團隊開發的需要,存在一下問題:
- 需要主動指明路徑,然后庫的本地位置就不能動了,否則Podfile中又要修改path路徑;
- 版本升級不好維護,無法安裝0.1版本或0.2版本,因為本地庫沒法打標簽;
- 多人合作開發非常不方便,因為庫只是在本地的個人電腦上,團隊的小伙伴沒法用。
所以必須要建立遠程私有庫。
了解一些遠程私有庫的知識,先來看看cocoaPods官方的索引庫的位置:
cocoaPods官方的索引庫的位置.png
查看本地庫
pod repo,可以看到,目前只有master這一個庫;
本地目前只有一個cocoaPods官方的索引庫.png
一、創建自己的索引庫:遠程私有的和本地私有的
- 碼市上先建好私有索引項目(也就是個普通的私有項目,只要忽略文件就行了,許可證書不用,反正是私有的);
- 命令行cd進入repos文件夾(/Users/UserName/.cocoapods/repos);
- pod repo add LFSpec0707 git@git.coding.net:mylovell/LFSpec0707.git;(SSH方式,需要先設置公鑰,見本文)
- repos下多了個LFSpec0707索引庫,
pod repo
可以看到有兩個庫,如下圖。
自己的遠程索引庫LFSpec0707.png
二、本地私有庫上傳到遠程
-
遠程創建好項目: 碼市上創建LFFMBase私有空殼項目(開源許可證書和忽略文件都不要,要全空,否則第一次上傳代碼要先合并代碼
git pull origin master --allow-unrelated-histories
,然后還要處理忽略文件和許可證書的沖突,麻煩,要么就pod模板里面的忽略文件和許可證書先刪再合并),遠程鏈接備用; - 本地準備好私有庫的文件:pod lib create LFFMBase創建pod模板(這樣測試工程Example相關文件和庫相關文件都有了),拖入自己的組件庫替代ReplaceMe.m,測試工程的Podfile的path指向本地庫,pod install安裝下,編譯;
- 提交庫文件:git add . ,git commit ,git ,git remote add origin https:地址,git push origin master,git tag '0.1.0' ,git push --tags 。如此以來,該遠程庫既有測試工程Example,又有庫文件。
-
提交podspec文件:修改podspec文件,本地驗證podspec,
pod lib lint
(驗證當前文件夾下的podspec文件),pod spec lint
(遠程驗證),如果驗證遇到問題見下文。pod repo
先查看本地有哪些索引庫。提交podspec到本地私有索引庫LFSpec0707,pod repo push LFSpec0707 LFFMBase.podspec
(即提交LFFMBase.podspec到LFSpec0707)。push相關過程見圖(podspec文件push的過程.png) - search檢驗:pod search LFFMBase,可以搜索到庫了。
-
宿主工程安裝遠程庫:在宿主工程中安裝使用LFFMBase,注意修改Podfile文件中要添加兩個source。先
pod repo
查看有哪些庫,在把私有source和共有cocoaPods的source都寫進Podfile中,這樣就會從這兩個私有和共有source中去查找。pod install。(Podfile中添加私有和公有source.png)
本地庫要上傳到遠程的文件.png
podspec文件push的過程.png
Podfile中添加私有和公有source.png
~~~關于設置公鑰、私鑰
1.私鑰存放處
私鑰存放處.png
2.命令行獲取公鑰私鑰
ssh-keygen,默認路徑,不設密碼,按了4下回車,出來兩個文件。
公鑰私鑰.png
Snip20170707_38.png
~~~本地驗證pod lib lint
、遠程驗證pod spec lint
提交podspec文件之前,先驗證下。如果不本地和遠程驗證,在提交podspec文件的時候也會進行這兩步驗證。為了方便解決問題,建議單獨進行這兩步。
本地驗證
pod lib lint
:驗證當前文件夾(open .)下的podspec文件。本地驗證不會驗證s.source,不會驗證tag。遠程驗證
pod spec lint
:會驗證s.source和tag。其中tag,遠程庫和本地都要有,且要一樣,所以記得打tag。否則遠程驗證失敗,如下圖。--allow-warnings
未打tag造成的遠程驗證問題.png
~~~提交代碼到遠程,復習下
- 進入文件夾
cd - 提交到遠程
git add .
git commit -m 'vvvvv'
git remote // 查看是否有關聯遠程庫
git remote add origin https://git.coding.net/......... //關聯遠程庫
git push origin master - 打標簽tag
git tag // 查看tag標簽
git tag '0.1.0' // 打tag
git push --tags // 提交tags
~~~提交podspec文件,復習下
- pod repo // 看下本地索引庫有哪些,有沒自己要的
- pod lib lint // 本地驗證
- pod spec lint //遠程驗證
- pod repo push LFSpec0707 LFFMBase.podspec // 提交某podspec文件到LFSpec0707私有索引庫,該私有索引庫再傳文件到遠程庫(podspec文件push的過程.png)。
- --allow-warnings
~~~遠程庫和本地庫位置
遠程庫和本地庫位置20170707.png
~~~ 位置:索引庫和已安裝了的庫
已安裝了的庫:/Users/fengluo/Library/Caches/CocoaPods
已安裝了的庫.png
所有描述文件存放處:/Users/fengluo/.cocoapods/repos
描述文件存放處.png
~~~ search_index.json
所在路徑:/Users/chemf/Library/Caches/CocoaPods/search_index.json
search_index.json索引文件是由官方的master描述文件庫和私有描述文件庫共同建立的:可以推出當你pod搜索一個庫時,不管是私有還是cocoaPods公有,都會進入這個json索引文件。
search_index.json索引文件與官方的master描述文件庫和私有描述文件庫的關系.png
~~~ 一些疑問 / 碰到的問題:私有庫命名可以搜索到,卻無法pod install
問題:一開始用碼市,后來用碼云,可能是本地緩存的碼市的用戶名和密碼,導致無法進入碼云。待解決。。。
Snip20170707_62.png
解決:在宿主工程的Podfile文件中沒有添加私有庫公有庫的source,添加之后可以Pod install安裝了。
記得添加私有庫和公有庫的source.png