一谈火、背景
首先了解下使用需求郊闯。公司有多個項目同時進行,期望可以共用一個工具庫贪庙。而該工具庫代碼可能涉及到公司內(nèi)部信息蜘犁,不便公開,需要部署在內(nèi)部服務(wù)器上止邮。也就是私有庫的管理这橙。
大家都知道CocoaPods
管理第三方庫十分方便,所以我們希望私有庫的使用也可以借助CocoaPods
管理导披。
二屈扎、準(zhǔn)備私有庫平臺
首先,我們需要一個管理私有庫代碼的平臺撩匕,我們公司暫時使用的是GitLab
鹰晨,先了解下概念。
Git
:版本控制系統(tǒng)。
Github
:在線的基于 Git 的代碼托管服務(wù)模蜡,同時提供付費賬戶和免費賬戶漠趁。這兩種賬戶都可以創(chuàng)建公開的代碼倉庫,只有付費賬戶可以創(chuàng)建私有的代碼倉庫哩牍。
Gitlab
解決了這個問題, 可以在上面創(chuàng)建免費的私人repo
棚潦。
如何搭建本地服務(wù)器Gitlab
倉庫管理,大家自己去看吧膝昆。
三丸边、創(chuàng)建一個Git遠(yuǎn)程倉庫
我們私有庫包含多個工具類的代碼庫,每個工具庫代碼使用
CocoaPods
打包后會生成一個.podspec
文件荚孵,來描述該工具庫的具體信息妹窖,包括代碼地址。而所有的庫的.podspec
文件要有一個Spec Repo
私有倉庫去管理收叶。
多個.podspec
文件也稱specs
骄呼,作為我們查找?guī)鞎r候的一個索引,為什么我們執(zhí)行pod search AFNetworking
命令時判没,返回結(jié)果如此之快蜓萄。因為安裝CocoaPods
的時候,本地目錄就已經(jīng)有了一份master
(公開)的specs
澄峰,全球程序員們提交到CocoaPods
的開源代碼在這都有記錄嫉沽。
我們可以通過執(zhí)行命令查看一下目錄結(jié)構(gòu),結(jié)果一目了然俏竞。命令如下:
open ~/.cocoapods/repos/master
我們創(chuàng)建的私有specs
倉庫地址為http://私有庫地址/EHILibraryiOS/EHILibrarySpecs.git
绸硕。下面執(zhí)行命令把Spec
創(chuàng)建到本地。命令如下:
pod repo add EHILibrarySpecs http://私有庫地址/EHILibraryiOS/EHILibrarySpecs.git
這時候EHILibrarySpecs
就在本地目錄下創(chuàng)建成功了魂毁,通過命令查看EHILibrarySpecs
的目錄結(jié)構(gòu)玻佩,會發(fā)現(xiàn)里面的內(nèi)容和git
倉庫上的保持一致。EHILibrarySpecs
和master
在目錄中同級席楚。
open ~/.cocoapods/repos/EHILibrarySpecs
四咬崔、創(chuàng)建Pod代碼庫
有了倉庫,我們就可以添加代碼庫啦烦秩。
4.1 使用pod
創(chuàng)建庫:
pod lib create EHIHiCarBluetooth
過程中終端會向我們提出一系列問題刁赦,大家自行選擇即可。
4.2 添加文件闻镶,寫好Demo
如圖甚脉,添加文件:
工程目錄如下:
在Example
中寫好Demo
,保證編譯運行ok铆农。
4.3 編輯*.podspec
務(wù)必保證填寫的每一項都要是正確的牺氨,比如主頁和鏈接都要能夠訪問狡耻。
編輯EHIHiCarBluetooth.podspec
文件如下:
#
# Be sure to run `pod lib lint EHIHiCarBluetooth.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
s.name = 'EHIHiCarBluetooth'
s.version = '0.1.0'
s.summary = '一句話描述'
# This description is used to generate tags and improve search results.
# * Think: What does it do? Why did you write it? What is the focus?
# * Try to keep it short, snappy and to the point.
# * Write the description between the DESC delimiters below.
# * Finally, don't worry about the indent, CocoaPods strips it!
s.description = <<-DESC
TODO: Add long description of the pod here.
DESC
s.homepage = 'http://私有庫地址/EHILibraryiOS/EHIHiCarBluetooth'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { '用戶名' => '郵箱地址' }
s.source = { :git => 'http://私有庫地址/EHILibraryiOS/EHIHiCarBluetooth.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
s.ios.deployment_target = '8.0'
s.source_files = 'EHIHiCarBluetooth/Classes/*'
# s.resource_bundles = {
# 'EHIHiCarBluetooth' => ['EHIHiCarBluetooth/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
s.dependency 'YYKit'
s.dependency 'BabyBluetooth', '~> 0.7.0'
end
4.4 驗證*.podspec
驗證本地庫是否通過驗證,終端輸入如下命令:
pod lib lint --use-libraries --allow-warnings
--use-libraries
表示使用了第三方猴凹,--allow-warnings
表示忽略警告夷狰。
如果使用了私有庫,命令如下(我的這個沒有用到):
pod lib lint --sources=http://私有庫地址/EHILibraryiOS/EHIHiCarBluetooth.git,https://github.com/CocoaPods/Specs.git --use-libraries --allow-warnings
4.5 提交代碼
git add .
git commit -m 'create EHIHiCarBluetooth 0.1.0'
如果你還未創(chuàng)建遠(yuǎn)程倉庫郊霎,你需要創(chuàng)建與之對應(yīng)的遠(yuǎn)程倉庫:
創(chuàng)建之后與本地倉庫關(guān)聯(lián)并推送沼头,在終端執(zhí)行如下命令:
git push --set-upstream http://私有庫地址/EHILibraryiOS/EHIHiCarBluetooth.git master
提交完成之后進行打標(biāo)簽操作(這就作為該庫的版本,版本號和上面.podspec
文件配置中保持一致):
git tag -a 0.1.0 -m 'release version 0.1.0'
git push http://私有庫地址/EHILibraryiOS/EHIHiCarBluetooth.git 0.1.0
4.6 推送*.podspec
到遠(yuǎn)程
4.6.1 推送到私有庫
首先將本地EHIHiCarBluetooth.podspec
推送到遠(yuǎn)程私有EHILibrarySpecs
倉庫:
pod repo push EHILibrarySpecs EHIHiCarBluetooth.podspec --use-libraries --allow-warnings
--force
一般用不著书劝,需要強制推送的話可以在后面加上进倍。
4.6.2 推送到公有庫
順便記錄下公有庫的上傳吧。公有庫的上傳前面操作一樣的购对,保證在Github
上已經(jīng)創(chuàng)建了庫猾昆,.podspec
里的地址和Github
上對應(yīng),打好Tag
并上傳驗證等骡苞。然后推送如下:
先使用郵箱注冊命令:
pod trunk register 郵箱 '用戶名'
命令成功后垂蜗,會提示去郵箱驗證。登錄郵箱解幽,打開郵箱里的鏈接進行驗證贴见。
回到終端,輸入以下命令(如果提示驗證過期躲株,重新操作上一步驟):
pod trunk me
命令后終端界面如下即可:
上傳.podspec
到CocoaPods/repo
(注意在.podspec文件上級目錄下操作):
pod trunk push xxx.podspec
4.7 驗證遠(yuǎn)程是否通過
pod spec lint EHIHiCarBluetooth.podspec --allow-warnings --use-libraries
4.8 pod搜索
pod search EHIHiCarBluetooth
如果遠(yuǎn)程驗證通過片部,但是搜索不到,是因為沒有添加進pod search
緩存文件徘溢,刪掉緩存重建即可吞琐!命令如下:
# 切換到CocoaPods目錄
cd ~/Library/Caches/CocoaPods/
# 查看該目錄下有Pods和search_index.json兩個文件
ls
# 刪除緩存文件
rm search_index.json
# 重新搜索
pod search EHIHiCarBluetooth
五捆探、使用
Podfile
文件如下:
# CocoaPods官方spec倉庫
source 'https://github.com/CocoaPods/Specs.git'
# 私有spec倉庫
source 'http://私有庫地址/EHILibraryiOS/EHILibrarySpecs.git'
platform :ios, '8.0'
target 'TextPodBluetooth' do
# 私有庫
pod 'EHIHiCarBluetooth','~> 0.1.0'
end