組件12:遠程私有庫方案(重要)

本地私有庫不能滿足團隊開發的需要,存在一下問題:

  1. 需要主動指明路徑,然后庫的本地位置就不能動了,否則Podfile中又要修改path路徑;
  2. 版本升級不好維護,無法安裝0.1版本或0.2版本,因為本地庫沒法打標簽;
  3. 多人合作開發非常不方便,因為庫只是在本地的個人電腦上,團隊的小伙伴沒法用。
    所以必須要建立遠程私有庫。

了解一些遠程私有庫的知識,先來看看cocoaPods官方的索引庫的位置:


cocoaPods官方的索引庫的位置.png

查看本地庫
pod repo,可以看到,目前只有master這一個庫;

本地目前只有一個cocoaPods官方的索引庫.png
一、創建自己的索引庫:遠程私有的和本地私有的
  1. 碼市上先建好私有索引項目(也就是個普通的私有項目,只要忽略文件就行了,許可證書不用,反正是私有的);
  2. 命令行cd進入repos文件夾(/Users/UserName/.cocoapods/repos);
  3. pod repo add LFSpec0707 git@git.coding.net:mylovell/LFSpec0707.git;(SSH方式,需要先設置公鑰,見本文)
  4. repos下多了個LFSpec0707索引庫,pod repo可以看到有兩個庫,如下圖。
自己的遠程索引庫LFSpec0707.png
二、本地私有庫上傳到遠程
  1. 遠程創建好項目: 碼市上創建LFFMBase私有空殼項目(開源許可證書和忽略文件都不要,要全空,否則第一次上傳代碼要先合并代碼git pull origin master --allow-unrelated-histories,然后還要處理忽略文件和許可證書的沖突,麻煩,要么就pod模板里面的忽略文件和許可證書先刪再合并),遠程鏈接備用;
  2. 本地準備好私有庫的文件:pod lib create LFFMBase創建pod模板(這樣測試工程Example相關文件和庫相關文件都有了),拖入自己的組件庫替代ReplaceMe.m,測試工程的Podfile的path指向本地庫,pod install安裝下,編譯;
  3. 提交庫文件:git add . ,git commit ,git ,git remote add origin https:地址,git push origin master,git tag '0.1.0' ,git push --tags 。如此以來,該遠程庫既有測試工程Example,又有庫文件。
  4. 提交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)
  5. search檢驗:pod search LFFMBase,可以搜索到庫了。
  6. 宿主工程安裝遠程庫:在宿主工程中安裝使用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文件的時候也會進行這兩步驗證。為了方便解決問題,建議單獨進行這兩步。

  1. 本地驗證pod lib lint:驗證當前文件夾(open .)下的podspec文件。本地驗證不會驗證s.source,不會驗證tag。

  2. 遠程驗證pod spec lint:會驗證s.source和tag。其中tag,遠程庫和本地都要有,且要一樣,所以記得打tag。否則遠程驗證失敗,如下圖。

  3. --allow-warnings

未打tag造成的遠程驗證問題.png
~~~提交代碼到遠程,復習下
  1. 進入文件夾
    cd
  2. 提交到遠程
    git add .
    git commit -m 'vvvvv'
    git remote // 查看是否有關聯遠程庫
    git remote add origin https://git.coding.net/......... //關聯遠程庫
    git push origin master
  3. 打標簽tag
    git tag // 查看tag標簽
    git tag '0.1.0' // 打tag
    git push --tags // 提交tags
~~~提交podspec文件,復習下
  1. pod repo // 看下本地索引庫有哪些,有沒自己要的
  2. pod lib lint // 本地驗證
  3. pod spec lint //遠程驗證
  4. pod repo push LFSpec0707 LFFMBase.podspec // 提交某podspec文件到LFSpec0707私有索引庫,該私有索引庫再傳文件到遠程庫(podspec文件push的過程.png)。
  5. --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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容