CocoaPods 私有庫配置

前情提要

看了好多網(wǎng)上的CocoaPods私有庫配置,看的是一知半解,寫的都不是很詳細,還是需要自己實際操作。實踐是檢驗真理的唯一標準。在這里,我把最正確最詳細的步驟展示給大家。因為私有庫的配置對項目模塊化具有很大的作用,具體有多大的好處和作用,可能會在文章的最后也可能后續(xù)文章會說到,現(xiàn)在開始我們的私有庫配置,也是我將項目模塊化的第一步。
官方文檔 中文翻譯

第一步 創(chuàng)建一個私有的倉庫

也就是創(chuàng)建本地repo

首先在你的服務器上創(chuàng)建一個倉庫??梢允窃贕ithub上或者是你自己的服務器如下

$ cd /opt/git
$ mkdir Specs.git
$ cd Specs.git
$ git init --bare

第二步 添加你的私有庫到你的CocoaPods中

使用你服務器上的倉庫的URL,添加你的倉庫使用:

$ pod repo add Repo_Name SOURCE_URL

Repo_Name:你自己取得私有庫的名字
SOURCE_URL:是你第一步創(chuàng)建私有庫的URL地址

成功后,你可以額檢查是否成功安裝,通過

$ cd ~/.cocoapods/repos/REPO_NAME
$ pod repo lint .
驗證成功如圖

第三步 創(chuàng)建我們的私有庫中的自定義Library

通過CocoaPods為我們提供的模板,可以自動創(chuàng)建一個項目,供我們創(chuàng)建自定義Lib

pod lib create MyLibrary

MyLibrary:是自定義Lib的名字,自取

可以使用自己的模板,因為這句命令其實是縮寫,其完整應該是 pod lib create MyLibrary --template-url= https://github.com/cocoapods/pod-template,可以把=后面的URL替換成你自己的模板URL,不過我想幾乎沒人會用自己的模板吧(應該不會打臉吧,反正我用的是默認的)。

然后會問你一些問題來完成默認的配置。第一個問題是郵箱:

What is your email?
 > XXXX@163.com

然后接下來的一系列問題

XXXXXX$ pod lib create QGGImagePicker
Cloning `https://github.com/CocoaPods/pod-template.git` into `QGGImagePicker`.
Configuring QGGImagePicker template.
------------------------------
To get you started we need to ask a few questions, this should only take a minute.
If this is your first time we recommend running through with the guide: 
 - http://guides.cocoapods.org/making/using-pod-lib-create.html
 ( hold cmd and double click links to open in a browser. )
What language do you want to use?? [ ObjC / Swift ]
 > ObjC
Would you like to include a demo application with your library? [ Yes / No ]
 > Yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
 > Specta
Would you like to do view based testing? [ Yes / No ]
 > Yes
What is your class prefix?
 > QGG

第一個問題是你用的什么語言,不多說了。
第二個問題是問你要不要包含一個Demo,來測試你的Library。有了這個demo后,你可以用pod try MyLib獲取到能測試你Library的Demo。
第三個問題是讓你選擇一個測試的framework,保證你的library的穩(wěn)定性。官方推薦Specta。
第四個問題是問你是否要基于視圖的測試。
第五個問題,讓你所有的Class加上一個前綴。

直接回車會選擇選項中帶下劃線也就是默認項。

然后將你的Lib代碼放入到模板項目中,文件路徑參照下圖:

文件路徑參照圖

非常重要的一點

先聲明我是這樣操作的,網(wǎng)上并沒有看到接下來的操作,都非常跳躍,說的很少。

我將項目復制出來,是打開項目,將里面的文件夾復制出來,如下圖:

復制這些文件

?。。?!注意:不是在最外層將整個項目文件夾復制出來,因為是用模板自動生成出來的,所以細心的同學會發(fā)現(xiàn)這個項目中有自動生成的.git、.gitignore隱藏文件?。。。?/strong>

隱藏文件見此圖

我一開始的時候直接在github上建了個Lib的Repository,然后直接check out 到本地,然后將模板自動生成項目到Lib的工作目錄,發(fā)現(xiàn)根本沒發(fā)現(xiàn)文件有修改,沒東西上傳到github。所以問題出在了通過模板自動生成的項目對應提交的git目錄也指向了生成時的模板URL。我開始還費解怎么沒法上傳修改后的代碼,搞了半天問題出在這,坑死爹了?。?!

恩,發(fā)現(xiàn)問題后就感覺如履平地。然后按照我上面所說的復制出來文件到check out出來的目錄,然后就能上傳代碼到git了,注意打個tag,原因看下面一段,

你會在項目里看到一個后綴名為.podspec的文件,這個文件很重要,這是Lib的Pod配置文件。打開,很多工具可以打開,我用的是Sublime Text。打開大致是這樣的內(nèi)容

Pod::Spec.new do |s|
  s.name             = 'MyLibrary'
  s.version          = '0.1.0'
  s.summary          = 'Test of MyLibrary.'
  s.description      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

  s.homepage         = 'https://github.com/jiabibi888/MyLibrary'

  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'jiabibi888' => 'zhangjiabi9149@163.com' }
  s.source           = { :git => 'https://github.com/jiabibi888/MyLibrary.git', :tag => s.version.to_s }

  s.ios.deployment_target = '8.0'

  s.source_files = 'MyLibrary/Classes/**/*'
  
end

默認出來就是這樣,配置文件基本已經(jīng)沒問題了,不用自己再參照官方語法寫了。接下來解釋為什么要打一個tag,你會看到第二個參數(shù)s.version = '0.1.0',這個版本你可以修改,是用來標注你Lib版本的。以tag=0.1.0為例,然后往下看 s.source = { :git => 'https://github.com/jiabibi888/MyLibrary.git', :tag => s.version.to_s },它會通過tag去取資源,所以你需要打一個tab,不然獲取不到代碼資源。

就像上面說的配置文件基本已經(jīng)沒問題,你只要注意看下s.homepage = 'https://github.com/jiabibi888/MyLibrary'和s.source = { :git => 'https://github.com/jiabibi888/MyLibrary.git', :tag => s.version.to_s }中的URL是否正確,即可??捎?strong>pod lib lint 和 pod spec lint來驗證你的podspec文件是否正確。兩個指令的不同點在于pod lib lint不用訪問網(wǎng)路,而pod spec lint檢查外部repo和相關標簽。

下面是是用pod spec lint命令來驗證的具體情況:

$ pod spec lint

 -> MyLibrary (0.1.0)

Analyzed 1 podspec.

MyLibrary.podspec passed validation.

好,到這一步,你的Lib創(chuàng)建已經(jīng)成功。

第四步 添加你的Podspec到你的倉庫

確定你已經(jīng)給你的代碼資源打上tag和版本,然后運行

$ pod repo push REPO_NAME SPEC_NAME.podspec

成功以后是這樣的情況:

$ pod repo push TestSpec MyLibrary.podspec

Validating spec
 -> MyLibrary (0.1.0)

Updating the `TestSpec' repo

Already up-to-date.

Adding the spec to the `TestSpec' repo

 - [Add] MyLibrary (0.1.0)

Pushing the `TestSpec' repo

To https://github.com/XXXX/TestSpec.git
   a63caee..dd11098  master -> master

Congratulations!??!

自此,一個你自定義的Lib成功加入到了你的私有庫中。

可以將私有庫中的.podspec文件轉(zhuǎn)成.json

$ pod ipc spec MyLibrary.podspec >> MyLibrary.podspec.json

支持CocoaPods公開庫

https://github.com/CocoaPods/Specs.git 下fork一份

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 一、私有庫配置過程 1、在github創(chuàng)建私有庫倉庫,如TestRepos。然后添加到本地。 pod repo a...
    殘雪3088閱讀 2,824評論 10 3
  • 前情提要 公司項目一直在用CocoaPods管理第三方包,自己也想著將項目中的公用模塊抽離出來獨立的包。所以研究了...
    0occ閱讀 11,427評論 13 13
  • CocoaPods是一個iOS,Mac OS下強大的依賴包工具,不僅用來管理第三方開源代碼的項目代碼,您也可以通過...
    zyl04401閱讀 969評論 0 0
  • 前言 現(xiàn)在的項目完全是用組件化的思路開發(fā)的,也是借此機會親自實現(xiàn)了一把。項目里的每個業(yè)務模塊都是使用cocoapo...
    不要人夸顏色好閱讀 810評論 0 1
  • 項目組件化、平臺化是技術公司的共同目標,越來越多的技術公司推崇使用pod管理第三方庫以及私有組件,一方面使項目架構...
    swu_luo閱讀 22,858評論 0 39

友情鏈接更多精彩內(nèi)容