CocoaPods私有庫制作+上傳到公有庫(小白教程)



一谈火、背景

首先了解下使用需求郊闯。公司有多個項目同時進行,期望可以共用一個工具庫贪庙。而該工具庫代碼可能涉及到公司內(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倉庫上的保持一致。EHILibrarySpecsmaster在目錄中同級席楚。

open ~/.cocoapods/repos/EHILibrarySpecs

四咬崔、創(chuàng)建Pod代碼庫

有了倉庫,我們就可以添加代碼庫啦烦秩。

4.1 使用pod創(chuàng)建庫:

pod lib create EHIHiCarBluetooth
image.png

過程中終端會向我們提出一系列問題刁赦,大家自行選擇即可。

4.2 添加文件闻镶,寫好Demo

如圖甚脉,添加文件:

image.png

工程目錄如下:

image.png

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)程倉庫:

image.png

創(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

命令后終端界面如下即可:

image.png

上傳.podspecCocoaPods/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

六然爆、參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末曾雕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子助被,更是在濱河造成了極大的恐慌剖张,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揩环,死亡現(xiàn)場離奇詭異搔弄,居然都是意外死亡,警方通過查閱死者的電腦和手機丰滑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門顾犹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事炫刷∏姹Γ” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵浑玛,是天一觀的道長绍申。 經(jīng)常有香客問我,道長顾彰,這世上最難降的妖魔是什么极阅? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮拘央,結(jié)果婚禮上涂屁,老公的妹妹穿的比我還像新娘。我一直安慰自己灰伟,他們只是感情好拆又,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著栏账,像睡著了一般帖族。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挡爵,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天竖般,我揣著相機與錄音,去河邊找鬼茶鹃。 笑死涣雕,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闭翩。 我是一名探鬼主播挣郭,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疗韵!你這毒婦竟也來了兑障?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蕉汪,失蹤者是張志新(化名)和其女友劉穎流译,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體者疤,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡福澡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了驹马。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片革砸。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡眯搭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出业岁,到底是詐尸還是另有隱情鳞仙,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布笔时,位于F島的核電站棍好,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏允耿。R本人自食惡果不足惜借笙,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望较锡。 院中可真熱鬧业稼,春花似錦、人聲如沸蚂蕴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽骡楼。三九已至熔号,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸟整,已是汗流浹背引镊。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留篮条,地道東北人弟头。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像涉茧,于是被迫代替她去往敵國和親赴恨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容