接著上兩篇文章CocoaPods公有庫和CocoaPods本地私有庫,這篇就來講解下CocoaPods遠(yuǎn)程私有庫,啥叫CocoaPods遠(yuǎn)程私有庫?CocoaPods遠(yuǎn)程私有庫就是庫存在遠(yuǎn)程倉庫,權(quán)限歸自己管理,不是公開的,但可以通過source地址給伙伴們獲取自己的私有庫。公司需求要用CocoaPods管理模塊開發(fā),一般都是做遠(yuǎn)程私有庫,公司的代碼不能公開。
一、創(chuàng)建私有索引庫(Spec Repo)
私有索引庫Spec Repo可以這樣理解,公有索引庫就是存放在CocoaPods的遠(yuǎn)程倉庫且是公開的,大家都可以用到的,安裝CocoaPods的時候已經(jīng)自動添加索引repo到本地了,其中master就是CocoaPods公有的索引repo。所以自己要創(chuàng)建一個私有的遠(yuǎn)程倉庫存放索引庫并把索引repo添加到本地,這樣就不是公開的了,是自己私有的。如圖所示:


代碼托管除了[GitHub](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com)還有[碼云](https://links.jianshu.com/go?to=https%3A%2F%2Fgitee.com)和[coding](https://links.jianshu.com/go?to=https%3A%2F%2Fcoding.net),GitHub的私有項目時要錢的,其他兩個是免費的,我這里就用[碼云](https://links.jianshu.com/go?to=https%3A%2F%2Fgitee.com%2F)來創(chuàng)建私有索引庫,創(chuàng)建點擊右上角的+選擇新建項目,如圖所示:

創(chuàng)建私有索引庫完成后,使用命令 “pod repo add repo的名(如CocoaPods自帶的master) 碼云項目spec的地址 ” 來創(chuàng)建本地spec庫,這里碼云項目spec的地址有https和ssh,如果用https的話,別人要用到你的庫就要給密碼他,這樣不方便,ssh不需要輸入密碼,但第一次的配置的話要配置公鑰。
如果沒有配置好公鑰,執(zhí)行創(chuàng)建本地spec庫就報沒有權(quán)限的錯誤,如圖:

然后就是生成ssh公鑰,通過命令 $ ssh-keygen 來生成ssh公鑰,通過提示操作輸入保存的密碼,我這就不演示了,我之前已經(jīng)生成過,進入.ssh的路徑,用xcode打開id_rsa.pub文件,復(fù)制內(nèi)容。


把復(fù)制好的ssh-rsa填到碼云的ssh公鑰,如圖所示:

碼云配置好ssh的公鑰后,在用命令執(zhí)行生成本地spec庫,結(jié)果通過了,然后在repos看到多了一個remoteLib的文件就證明成功了。


用到的命令:
**pod repo //查詢有多少本地repo**
** ssh-keygen //生成ssh公鑰**
** pod repo add remoteLib git@gitee.com:vxchj/RemoteLibSpec.git //remoteLib是repo保存的名字 //git@gitee.com:vxchj/RemoteLibSpec.git是在碼云創(chuàng)建私有索引庫的地址 **
二、創(chuàng)建Pod私有庫所需要的項目工程文件
這里就不詳細(xì)講解創(chuàng)建私有項目了,大家用過的應(yīng)該都知道,直接上圖展示。

clone到本地桌面

三、通過CocoPods的官方命令創(chuàng)建Pod項目工程
這也是在桌面創(chuàng)建pod項目工程,使用命令創(chuàng)建Pod項目工程文件 $ pod lib create RemoteLibQiuyh ,RemoteLibQiuyh是工程名,然后等待一下會出現(xiàn)很多選擇,按照提示選擇輸入就OK,下載完就會自動打開工程。

打開剛剛下載好的工程,把自己要做的庫放進去,然后刪除多余的ReplaceMe.m文件,如圖所示:


替換好要上傳的庫之后,cd到項目中的Example,執(zhí)行 $ pod install 安裝本地庫,看能不能安裝成功,如圖:這時候項目就相當(dāng)于本地私有庫項目了。


四、pod項目關(guān)聯(lián)遠(yuǎn)程私有倉庫、修改.podspec文件和上傳遠(yuǎn)程倉庫
有了本地私有庫項目后,我們要的是遠(yuǎn)程私有庫,所以要修改.podspec文件并且上傳庫到倉庫。修改.podspec文件這里不多說,詳情請看[CocoaPods公有庫](http://www.itdecent.cn/p/1aa1ddcb4e4f),這一步可以在上傳到倉庫之后再修改也可以,我這里就先修改了,直接上圖,

剛才第二步驟已經(jīng)創(chuàng)建遠(yuǎn)程倉庫了,也clone到本地了,把通過pod命令生成的pod項目的.git文件替換成遠(yuǎn)程私有倉庫的.git,這樣就關(guān)聯(lián)遠(yuǎn)程倉庫了。

替換成.git文件關(guān)聯(lián)遠(yuǎn)程私有倉庫后,就是上傳到遠(yuǎn)程倉庫,詳細(xì)步驟我就不細(xì)說了,CocoaPods公有庫有說明
配置好.podspec文件,接著就是把代碼上傳到遠(yuǎn)程倉庫,通過
**$ git add . ; **
** $ git commit -m “XX” ; **
** $ git push。**
打tag,打的tag一定要對應(yīng)版本號,因為.podspec文件配置已經(jīng)寫好跟版本號一樣的,通過
$ git tag '0.1.0' ;
** $ git push --tags;**
上傳成功之后倉庫就有源代碼和打tag了


五、驗證pod是否能通過和提交pod
這里就不詳細(xì)說明了,請看[CocoaPods公有庫](http://www.itdecent.cn/p/1aa1ddcb4e4f),我就直接操作上圖,這里要詳說的是,我直接用pod spec lint --allow-warnings來驗證,--allow-warnings是忽略警告,然后就是提交到spec repo,通過命令pod repo push remoteLib RemoteLibQiuyh.podspec ,remoteLib是之前生成的本地repo名,可以進入repos查看,或者直接命令 pod repo查看,RemoteLibQiuyh.podspec就是你笨項目的.podspec文件,如圖所示就是通過驗證并且提交成功。(**注:如果沒有改命令就要注冊CocoaPods賬號,詳情請看[CocoaPods公有庫](http://www.itdecent.cn/p/1aa1ddcb4e4f)**)


提交pod成功后搜索一下看能不能搜索到,通過命令pod search RemoteLibQiuyh搜索,結(jié)果可以搜索的到,那證明制作完成。

用到的命令:
** $ pod repo //查詢repo**
** $ pod spec lint --allow-warnings //遠(yuǎn)程本地pod驗證**
** $ pod repo push remoteLib RemoteLibQiuyh.podspec //提交pod到自己的私有索引庫,remoteLib是之前生成的本地repo名**
** $ pod search RemoteLibQiuyh //查詢庫**
六、如何使用
這不知你自己個人使用,還要整個團隊使用,那么怎樣使用呢,直接按照正常的邏輯直接在Podfile文件填寫pod 'RemoteLibQiuyh', '~> 0.1.0',然后pod install安裝??那當(dāng)然不行了,所謂的私有庫就是不能所有的能都能用,只有你給誰用誰就可以用。
首先在在Podfile文件填寫source '私有索引庫的地址',官方的CocoaPods地址就是source 'https://github.com/CocoaPods/Specs.git',這時候你要填寫你對應(yīng)的地址,可以用個pod repo 查看。如果要用到其他CocoaPods的第三方庫就要把官方的CocoaPods地址也添加上。如圖所示:


填寫完之后就通過pod install安裝。
注意:如果是隊友的話,直接這樣安裝時會報錯的,說沒有什么權(quán)限的,那是沒有在自己的git賬號設(shè)置中安裝ssh公鑰,其安裝方法跟步驟一一樣的,生成添加到賬號中的ssh公鑰,然后在pod install安裝就OK了。
七、版本更新
版本更新跟之前的步驟差不多,這就簡單說一下步驟:
1.修改.podspec文件中的版本號;
**s.version = "0.1.1" //修改0.1.1版本,不能是之前的版本,要不提交不成功**
2.上傳到遠(yuǎn)程倉庫;
**$ git add . ; **
**$ git commit -m “XX” ; **
**$ git push。**
3.打tag并上傳;
**$ git tag '0.1.1' ;**
** $ git push --tags;**
** 4.驗證pod并提交到pod。**
**$ pod repo //查詢repo**
** $ pod spec lint --allow-warnings //遠(yuǎn)程本地pod驗證**
** $ pod repo push remoteLib RemoteLibQiuyh.podspec //提交pod到自己的私有索引庫,remoteLib是之前生成的本地** **repo名**
**$ pod search RemoteLibQiuyh //查詢庫**
作者:槐_df85
鏈接:http://www.itdecent.cn/p/b65d51c851b1
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。