首先我們來想一下Cocoapods的工作邏輯晦墙。
Podfile中的默認(rèn)source為https://github.com/CocoaPods/Specs.git肴茄,這便是一個Spec repo,也就是Pod的索引寡痰,pod update的時候會去這個repo中進(jìn)行檢索棋凳,如果檢索到這個pod连躏,便會去對應(yīng)Pod的podspec中讀取對應(yīng)的路徑下載安裝。
接下來想想我們要做什么拍棕,首先我們需要建立一個遠(yuǎn)程倉庫作為Spec repo勺良,這里建立一個倉庫叫做CYRepo,然后我們再建立一個Pod庫CYKit尚困,并將這個Pod庫與CYRepo關(guān)聯(lián)起來,最后我們便可以pod install我們對應(yīng)的項(xiàng)目了谬泌。
最后完成的目錄結(jié)構(gòu)如圖所示:
一讳侨、創(chuàng)建我們的索引倉庫奏属。
我們在自己的gitlab服務(wù)器上創(chuàng)建一個遠(yuǎn)程倉庫,地址為:http://xxxxxxxxxxx/droog/CYRepo.git
然后將我們的遠(yuǎn)程倉庫添加到我們的Repo中
pod repo add [私有庫名] [遠(yuǎn)程倉庫URL]
這時候可以通過pod repo
查看對應(yīng)的repo勇婴,可以在終端看到對應(yīng)的CYRepo跟相應(yīng)的地址嘱腥。
二、創(chuàng)建我們的Pod庫
pod lib create CYKit
按照提示創(chuàng)建成功后齿兔,看到文件目錄里的CYKit.podspec
,便是我們這個Pod庫的配置文件,內(nèi)容編輯如下
Pod::Spec.new do |s|
s.name = "CYKit"
s.version = "1.0.1"
s.platform = :ios, "11.0"
s.summary = "this is a practice project of pod."
s.homepage = "https://www.apple.com"
s.license = { :type => "MIT", :file => "LICENSE" }
s.author = { "xcode" => "xcode@apple.com" }
s.source = { :git => "http://xxx.xxx.xxx.xx/droog/CYKit.git" }
s.source_files = "CYKit/**/*.swift"
s.resource = 'CYKit/CYKit.bundle'
s.framework = "UIKit","Foundation"
s.swift_version = '5.0'
s.requires_arc = true
end
對應(yīng)文件夾如圖所示
然后將我們的CYKit推到對應(yīng)的git地址。
假如我們想要更新內(nèi)容医寿,比如我們指定podspec的
s.version = "1.1.0"
給項(xiàng)目添加標(biāo)簽1.1.0。
三须眷、將Pod庫跟索引庫建立聯(lián)系
接著我們需要將指定的版本推送到遠(yuǎn)程倉庫,
pod repo push CYRepo CYKit.podspec --allow-warnings
將我們的podspec文件推送到我們的CYRepo中.
四花颗、建立測試項(xiàng)目,編輯Podfile文件測試Pod庫
OK乐横,讓我們試一下今野,新建一個項(xiàng)目CYKitTest并編輯Podfile文件.
target 'CYKitTest' do
# Comment the next line if you don't want to use dynamic frameworks
# 使用其他來源地址
source 'http://182.92.213.80/droog/CYRepo.git’
# 使用官方默認(rèn)地址(默認(rèn))
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks! :linkage => :static
# :git => 'http://xxxxxxx//CYKit.git'
pod 'CYKit', '~> 1.1.0'
end
執(zhí)行pod install之前我們可以先更新一下索引的CYRepo
pod repo CYRepo update
更新完成后運(yùn)行pod install,便可以使用了。