上一篇(讓自己的開源項目支援CocoaPods內建)介紹了将自己開發的架構代碼釋出到Cocoapods,全球的開發者都可以通過pod search搜尋到我們的架構代碼以及通過pod install進行安裝。但有時候我們希望隻有我們項目内部的人才可以內建和修改,此時就可以建立遠端的私有庫。
通過pod search指令,Cocoapods會在官方索引庫中進行搜尋,通過pod repo可以檢視本機添加了的索引庫,其中的master( https://github.com/CocoaPods/Specs.git ) 就是官方的索引庫。如果要建立私有庫,我們可以添加一個不對外公開的索引庫,使得pod search時,直接通過我們的索引庫找到我們的代碼。
主要步驟為
- 建立自己的遠端私有索引庫,即在遠端git倉庫建立一個包含.podspec索引檔案的git倉庫,并設定為私有(github需要收費,可以選擇免費的碼雲gitee.com)
- 配置公私鑰後,通過pod repo add ’遠端私有索引庫名稱‘ ’遠端私有索引庫位址‘ ,添加為新的索引庫。此時我們通過pod search '項目名稱’時,就會同時在官方索引庫和我們新添加的索引庫中搜尋。
- 通過pod lib create ‘遠端私有架構庫名稱’,在本地建立模闆庫,放入我們的架構代碼。
- 修改模闆庫裡.podspec檔案裡的配置資訊
- 在遠端git倉庫建立包含我們代碼的git倉庫,送出模闆庫到第3步中建立的遠端git倉庫
- 将架構.podspec檔案送出到私有索引庫
下面以實際例子建立HYSpecs遠端私有索引庫和遠端架構HYBase
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL90zdaVnVXJmaGdkY2JlMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0YTO1AzNxUTM3EzMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
一、建立自己的遠端私有索引庫
- 碼雲建立名稱為HYSpecs的git倉庫,注意要選擇私有
CocoaPods遠端私有庫
二、添加私有索引庫
為了通路上一步建立的索引庫,我們先配置公鑰和私鑰
-
建立公鑰和私鑰
在終端輸入
ssh-keygen
顯示Enter passphrase (empty for no passphrase): 時直接回車,此時成功在本地生成私鑰和公鑰。
-
将公鑰配置到碼雲
在碼雲上點選設定-ssh公鑰,然後用Xcode或Sublime打開使用者名/.ssh/id_rsa.pub檔案,将内容拷貝到碼雲上。
- 通過以下指令添加私有索引庫
pod repo add HYSpecs [email protected]:xwjadmin/HYSpecs.git
此時用以下指令檢視所有的索引庫,可以看到已經成功添加HYSpecs
pod repo
三、建立本地架構模闆
- cd到放項目的目錄後,通過以下指令建立架構模闆
pod lib create HYBase
此時會詢問我們架構項目的一些基本資訊,根據實際填寫即可
- 模闆建立成功後,把我們的架構代碼(此示例為HYBaseViewController)放入Classes檔案夾
CocoaPods遠端私有庫 - cd到Example檔案夾,執行安裝指令
pod install
此時已經将Classes中的代碼內建到Example的HYBase項目中,運作一下看是否能編譯成功。
四、 配置HYBase.podspec
用Xcode或Sumlime打開HYBase.podspec檔案,進行基本配置:
Pod::Spec.new do |s|
s.name = 'HYBase'
s.version = '1.0.0'
s.summary = 'HYBase.'
s.description = <<-DESC
HYBase.
DESC
s.homepage = 'https://gitee.com/xwjadmin/HYBase'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { '[email protected]' => '[email protected]' }
s.source = { :git => 'https://gitee.com/xwjadmin/HYBase.git', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'
s.source_files = 'HYBase/Classes/**/*'
end
詳細參數請參照上一篇(https://blog.csdn.net/dolacmeng/article/details/88416019)
五、建立并送出到遠端倉庫
在碼雲建立名為HYBase的遠端倉庫
将第三步建立的模闆送出的遠端HYBase倉庫:
git remote add origin https://gitee.com/xwjadmin/HYBase.git
git add .
git commit --m 'init'
push -u origin master -f
git tag '1.0.0'
git push --tags
具體步驟解釋參照上一篇https://blog.csdn.net/dolacmeng/article/details/88416019
六、将架構的.podspec檔案送出到私有索引庫
pod repo push HYSpecs HYBase.podspec
此時我們的描述檔案已經被送出到本地的私有索引庫中,然後本地私有索引庫會自動将描述檔案同步到我們的遠端私有索引庫當中。
此時通過pod search指令就可以搜尋到我們的架構了
pod search HYBase
注意在Podfile檔案中,我們需要先聲明使用的索引庫
source '[email protected]:xwjadmin/HYSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'
此時再執行pod install
七、子庫
搜尋AFNetworking,可以看見有多個子庫
pod search AFNetworking
如檢查網絡狀态的Reachability,可以隻內建AFNetworking/Reachability這一子庫,隻需在Podfile檔案添加:
pod "AFNetworking/Reachability"
例如框HYBase架構中需要內建Base、Category、Network等多個子庫,在HYBase.podspec檔案中添加如下:
s.subspec 'Base' do |b|
b.source_files = ''
end
s.subspec 'Category' do |c|
b.source_files = ''
end
s.subspec 'Network' do |n|
n.source_files = ''
n.dependency = 'AFNetworking'
end
其中source_files路徑為對應代碼的本地路徑。