Cocoapods創(chuàng)建podspec說(shuō)明

一.創(chuàng)建遠(yuǎn)程私有庫(kù)

創(chuàng)建一個(gè)私有的podspec包括如下那么幾個(gè)步驟:
1.創(chuàng)建并設(shè)置一個(gè)私有的Spec Repo。
2.創(chuàng)建Pod所需要的項(xiàng)目工程文件。
3.向遠(yuǎn)程倉(cāng)庫(kù)提交工程項(xiàng)目。
4.向私有的Spec Repo中提交podspec。
5.在個(gè)人項(xiàng)目中引入私有庫(kù)。
6.更新維護(hù)podspec。

在整個(gè)過(guò)程中我們一共需要兩個(gè)Git倉(cāng)庫(kù)。一個(gè)是用來(lái)放Pods索引的,也就是第一步中用到的,而且只有在第一次創(chuàng)建遠(yuǎn)程庫(kù)時(shí)才需要;另一個(gè)是用來(lái)存放工程代碼的遠(yuǎn)程倉(cāng)庫(kù),不一定是Git倉(cāng)庫(kù),其它的遠(yuǎn)程倉(cāng)庫(kù)也可以,本文以Git來(lái)介紹。

1.創(chuàng)建并設(shè)置一個(gè)私有的Spec Repo

Spec Repo是所有Pods的一個(gè)索引,相當(dāng)于一個(gè)容器,所有的Pods都在這個(gè)索引里面。如 ~/CocoaPods/Specs是所有公共的Pods的索引,稍后我們創(chuàng)建TestSpecs就是我們所有Pods私有庫(kù)的索引。

接下來(lái)我們創(chuàng)建Spec Repo,在終端執(zhí)行以下命令:
pod repo add TestSpecs http://XXX/TestSpecs.git

http://XXX/TestSpecs.git 是我們創(chuàng)建好的存放TestSpecs索引的倉(cāng)庫(kù)。
成功之后在 ~/.cocoapods/repos目錄下會(huì)多出一個(gè)TestSpecs文件。第一步完成。
PS:多人開(kāi)發(fā)時(shí),其他成員也需要執(zhí)行這個(gè)命令,且其他成員需要有這個(gè)Git倉(cāng)庫(kù)的權(quán)限。

2.創(chuàng)建Pod所需要的項(xiàng)目工程文件

在終端進(jìn)入需要?jiǎng)?chuàng)建項(xiàng)目的目錄,然后執(zhí)行:
pod lib create TestKit

執(zhí)行完之后會(huì)有幾個(gè)問(wèn)題,按需要回答即可?;卮鹜曛髸?huì)自動(dòng)執(zhí)行pod install命令創(chuàng)建項(xiàng)目并生成依賴。
現(xiàn)在進(jìn)入到項(xiàng)目目錄下的Example目錄下,打開(kāi)workspace文件,刪掉Replaceme文件,開(kāi)始編輯TestKit.podspec文件,參考以下格式:

Pod::Spec.new do |s|
    s.name             = 'TestKit'
    s.version          = '1.0.0'
    s.summary          = '遠(yuǎn)程庫(kù)測(cè)試'
    s.description      = <<-DESC
        ‘遠(yuǎn)程庫(kù)測(cè)試.’
    DESC
    s.homepage         = 'http://XXX'
    s.license          = { :type => 'MIT', :file => 'LICENSE' }
    s.author           = { 'xujiebing' => 'xujiebing1992@gmail.com' }
    s.source           = { :git => 'http://XXX/TestKit.git', :tag => s.version.to_s }
    s.ios.deployment_target = '8.0'
    s.source_files = 'TestKit/*'
end

添加項(xiàng)目需要的代碼,本地先測(cè)試編譯,確保編譯通過(guò)。

3.向遠(yuǎn)程倉(cāng)庫(kù)提交工程項(xiàng)目

在終端中進(jìn)入BWTKit目錄
將本地工程文件提交到遠(yuǎn)程倉(cāng)庫(kù)。執(zhí)行以下命令:
git add .
git commit -m '初始化項(xiàng)目'
git remote add origin http://XXX/TestKit.git # 關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù)
git push origin master # 提交到遠(yuǎn)程倉(cāng)庫(kù)
PS:如果push失敗可以嘗試命令:git push origin master -f # 覆蓋遠(yuǎn)程倉(cāng)庫(kù)

podspec文件中需要獲取Git的tag,所以我們這里需要打上tag。執(zhí)行以下命令:
git tag -m '第一個(gè)tag' 1.0.0
git push --tags # 推送tag到遠(yuǎn)程倉(cāng)庫(kù)

4.向私有的Spec Repo中提交podspec

在終端中進(jìn)入TestKit目錄
先本地驗(yàn)證podspec文件,執(zhí)行命令:
pod lib lint

當(dāng)看到以下輸出表示本地驗(yàn)證通過(guò)
-> TestKit (1.0.0)
TestKit passed validation.

接下來(lái)進(jìn)行遠(yuǎn)程驗(yàn)證,執(zhí)行命令:
pod spec lint
當(dāng)看到以下輸出表示遠(yuǎn)程驗(yàn)證通過(guò)
-> TestKit (1.0.0)
TestKit passed validation.

驗(yàn)證完之后向遠(yuǎn)程TestSpecs提交podspec,執(zhí)行命令:
pod repo push TestSpecs TestKit.podspec
完成之后這個(gè)TestKit庫(kù)就添加到我們的私有TestSpecs中了,可以進(jìn)入到~/.cocoapods/repos/TestSpecs目錄下查看,也可以去遠(yuǎn)程倉(cāng)庫(kù)查看。

5.在個(gè)人項(xiàng)目中引入私有庫(kù)

在需要引入私有庫(kù)的項(xiàng)目的podfile文件中引入:

source 'https://github.com/CocoaPods/Specs.git'
source 'http://XXX/TestSpecs.git'

pod 'TestKit', '~> 1.0.0'

PS: source 'https://github.com/CocoaPods/Specs.git' 必須要加,否則項(xiàng)目中引入的共有的Pods庫(kù)將無(wú)法安裝

6.更新維護(hù)podspec

我們已經(jīng)制作好TestKit 1.0.0版本,現(xiàn)在業(yè)務(wù)有變更,需要對(duì)TestKit進(jìn)行升級(jí)。
這是只需要將2,3,4,5步中的version和tag設(shè)置成新的值,然后重復(fù)2,3,4,5步即可。

二.遠(yuǎn)程私有庫(kù)中引入私有庫(kù)

以TestBizKit引入TestKit為例

1.創(chuàng)建Pod所需要的項(xiàng)目工程文件

在終端進(jìn)入需要?jiǎng)?chuàng)建項(xiàng)目的目錄,然后執(zhí)行:
pod lib create TestBizKit

執(zhí)行完之后會(huì)有幾個(gè)問(wèn)題,按需要回答即可?;卮鹜曛髸?huì)自動(dòng)執(zhí)行pod install命令創(chuàng)建項(xiàng)目并生成依賴。
現(xiàn)在進(jìn)入到項(xiàng)目目錄下的Example目錄下,打開(kāi)workspace文件,刪掉Replaceme文件,開(kāi)始編輯TestBizKit.podspec文件,參考以下格式:

Pod::Spec.new do |s|
    s.name             = 'TestBizKit'
    s.version          = '1.0.0'
    s.summary          = '測(cè)試'
    s.description      = <<-DESC
    ‘測(cè)試.’
    DESC
    s.homepage         = 'http://XXX'
    s.license          = { :type => 'MIT', :file => 'LICENSE' }
    s.author           = { 'xujiebing' => 'xujiebing1992@gmail.com' }
    s.source           = { :git => 'http://XXX/TestBizKit.git', :tag => s.version.to_s }
    s.ios.deployment_target = '8.0'
    s.source_files = 'TestBizKit/*'
    s.dependency 'TestKit' # 注意:這一步比較關(guān)鍵
end

在Podfile中加入:# 注意:這一步有所區(qū)別
source 'https://github.com/CocoaPods/Specs.git'
source 'http://XXX/TestSpecs.git'
進(jìn)入Example目錄下執(zhí)行 pod install

添加項(xiàng)目需要的代碼,本地先測(cè)試編譯,確保編譯通過(guò)。

2.向遠(yuǎn)程倉(cāng)庫(kù)提交工程項(xiàng)目

在終端中進(jìn)入BWTBaseBiz目錄
將本地工程文件提交到遠(yuǎn)程倉(cāng)庫(kù)。執(zhí)行以下命令:
git add .
git commit -m '初始化項(xiàng)目'
git remote add origin http://XXX/TestBizKit.git # 關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù)
git push origin master # 提交到遠(yuǎn)程倉(cāng)庫(kù)
PS:如果push失敗可以嘗試命令:git push origin master -f # 覆蓋遠(yuǎn)程倉(cāng)庫(kù)

podspec文件中需要獲取Git的tag,所以我們這里需要打上tag。執(zhí)行以下命令:
git tag -m '第一個(gè)tag' 1.0.0
git push --tags # 推送tag到遠(yuǎn)程倉(cāng)庫(kù)

3.向私有的Spec Repo中提交podspec

在終端中進(jìn)入TestBizKit目錄
先本地驗(yàn)證podspec文件,執(zhí)行命令:# 注意:這一步有區(qū)別
pod lib lint --sources=http://XXX/TestSpecs.git,https://github.com/CocoaPods/Specs.git

當(dāng)看到以下輸出表示本地驗(yàn)證通過(guò)
-> TestBizKit (1.0.0)
TestBizKit passed validation.

接下來(lái)進(jìn)行遠(yuǎn)程驗(yàn)證,執(zhí)行命令:# 注意:這一步有區(qū)別
pod spec lint --sources=http://git.bwton.com/msx-client-ios/TestSpecs.git,https://github.com/CocoaPods/Specs.git
當(dāng)看到以下輸出表示遠(yuǎn)程驗(yàn)證通過(guò)
-> TestBizKit (1.0.0)
TestBizKit passed validation.

驗(yàn)證完之后向遠(yuǎn)程TestSpecs提交podspec,執(zhí)行命令:# 注意:這一步有區(qū)別
pod repo push TestSpecs BWTKit.podspec --sources=http://git.bwton.com/msx-client-ios/TestSpecs.git,https://github.com/CocoaPods/Specs.git
完成之后這個(gè)BWTKit庫(kù)就添加到我們的私有TestSpecs中了,可以進(jìn)入到~/.cocoapods/repos/TestSpecs目錄下查看,也可以去遠(yuǎn)程倉(cāng)庫(kù)查看。私有庫(kù)引入私有庫(kù)制作完畢。

4.在個(gè)人項(xiàng)目中引入私有庫(kù)

在需要引入私有庫(kù)的項(xiàng)目的podfile文件中引入:

source 'https://github.com/CocoaPods/Specs.git'
source 'http://git.bwton.com/msx-client-ios/TestSpecs.git'

pod 'TestBizKit', '~> 1.0.0'

這時(shí)TestKit和TestBizKit都會(huì)被引入到項(xiàng)目中

三.更新私有庫(kù)

搜索不到遠(yuǎn)程私有庫(kù)時(shí),可以執(zhí)行以下操作:
1.進(jìn)入終端執(zhí)行命令:
rm ~/Library/Caches/CocoaPods/search_index.json
2.進(jìn)入到本地索引文件目錄(~/.cocoapods/repos/TestSpecs)下執(zhí)行命令:
git pull
接著搜索私有庫(kù)即可搜到

四.如何刪除私有庫(kù)

1.刪除整個(gè)TestSpecs文件,執(zhí)行命令:
pod repo remove TestSpecs
這樣本地的就刪除了,還可以通過(guò)以下命令加回來(lái):
pod repo add TestSpecs http://git.bwton.com/msx-client-ios/TestSpecs.git

2.刪除某個(gè)私有庫(kù)
進(jìn)入目錄 ~/.cocoapods/repos/TestSpecs下,刪除私有庫(kù)目錄,執(zhí)行命令:
rm -Rf TestKit
然后將本地的修改推到遠(yuǎn)程庫(kù),執(zhí)行命令:
git add -A
git commit -m '刪除TestKit私有庫(kù)'
git push origin master
操作完畢
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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