使用 CocoaPods 創(chuàng)建及管理私有庫(kù)

題內(nèi)話

之前在網(wǎng)上看了一些關(guān)于使用 CocoaPods 創(chuàng)建私有庫(kù)的相關(guān)文章,看著看著就被那些步驟給搞暈了恕汇,不知道先做什么后做什么,搞不清配置信息中填寫的地址是模塊的地址還是 .podspec 的地址或辖。后來(lái)靜下心來(lái)整理了下思路瘾英,如果是我的話,我會(huì)怎么處理颂暇。

我的思考

很多文章的標(biāo)題都是說(shuō)創(chuàng)建私有庫(kù)缺谴,我覺(jué)得這類標(biāo)題不夠準(zhǔn)確。應(yīng)該是“創(chuàng)建及管理私有庫(kù)”比較準(zhǔn)確耳鸯。從“創(chuàng)建及管理私有庫(kù)”這點(diǎn)就可以看出湿蛔,我們需要分成兩個(gè)部分來(lái)處理。

第一部分:創(chuàng)建私有庫(kù)

需要的內(nèi)容:
1)私有庫(kù)的代碼及資源文件等县爬。
2)管理這個(gè)私有庫(kù)信息的一個(gè)配置文件 .podspec阳啥。

要記住的是,這個(gè)配置文件中的配置信息只針對(duì)這個(gè)私有庫(kù)本身展開财喳,比如私有庫(kù)的創(chuàng)建者信息察迟,版本號(hào)是多少,倉(cāng)庫(kù)地址在哪耳高,需要導(dǎo)入哪些系統(tǒng)庫(kù)和三方庫(kù)等等扎瓶。

可以參考 AFNetworking 的配置文件

第二部分:管理私有庫(kù)

這里說(shuō)的管理私有庫(kù)泌枪,其實(shí)就是存放所有私有庫(kù)的配置文件概荷。目的是為了在項(xiàng)目中需要使用一些私有庫(kù)時(shí),你需要知道從哪里找到這些私有庫(kù)一樣工闺。類似于乍赫,當(dāng)我們使用一些第三方庫(kù)的時(shí)候瓣蛀,我們會(huì)通過(guò) CocoaPods 找到并導(dǎo)入這些第三方庫(kù)一樣。

這兩部分既是相互獨(dú)立又是相互關(guān)聯(lián)的雷厂。你創(chuàng)建私有庫(kù)就只管創(chuàng)建惋增,不用管怎么去管理這個(gè)私有庫(kù),那不是它本身的職責(zé)改鲫。創(chuàng)建完成后诈皿,管理的職責(zé)就交給了第二部分。

步驟

創(chuàng)建私有庫(kù)

  1. 新建工程像棘,編寫實(shí)現(xiàn)代碼稽亏。(因?yàn)槭撬接械模怨こ虘?yīng)該放在遠(yuǎn)程的私有倉(cāng)庫(kù)中缕题。)
文件路徑.png
Person頭文件.png
Person實(shí)現(xiàn)文件.png
遠(yuǎn)程倉(cāng)庫(kù).png
  1. 創(chuàng)建 .podspec 文件截歉。(一般習(xí)慣將模塊名作為文件名,這里為 ModuleA.podspec)

    通過(guò) pod spec create 文件名 創(chuàng)建 .podspec 文件烟零。

    內(nèi)容如下:

Pod::Spec.new do |s|

# 模塊名
s.name         = "ModuleA"
# 版本號(hào)瘪松。需要注意的是:當(dāng)倉(cāng)庫(kù)代碼 push 到遠(yuǎn)程倉(cāng)庫(kù)的時(shí)候,需要打上 tag锨阿。tag 和 版本號(hào)必須一致O馈!墅诡!
s.version      = "0.0.1"
# 簡(jiǎn)短描述
s.summary      = "A short description of ModuleA."
# 模塊主頁(yè)壳嚎,如 https://gitlab.com/xxx/ModuleA
s.homepage     = "http://EXAMPLE/ModuleA"
# license 類型
s.license      = { :type => "MIT", :file => "FILE_LICENSE" }

# 創(chuàng)建者信息
s.author             = { "姓名" => "郵箱地址" }
# 平臺(tái)信息,后面的數(shù)字指的是最低的系統(tǒng)要求末早。
s.platform     = :ios, "9.0"

#  When using multiple platforms
# s.ios.deployment_target = "5.0"
# s.osx.deployment_target = "10.7"
# s.watchos.deployment_target = "2.0"
# s.tvos.deployment_target = "9.0"

# 遠(yuǎn)程倉(cāng)庫(kù)路徑
s.source       = { :git => "http://EXAMPLE/ModuleA.git", :tag => "#{s.version}" }

# 需要暴露給別人的代碼文件
s.source_files  = "Classes", "Classes/**/*.{h,m}"

# 需要暴露給別人的資源文件
# s.resources = "Resources/*.png"

# 需要添加的系統(tǒng) framework
# s.frameworks = "SomeFramework", "AnotherFramework"

# 需要添加的系統(tǒng) .tbd 庫(kù)
# s.libraries = "iconv", "xml2"

# 是否是 ARC 環(huán)境
s.requires_arc = true
# xcconfig 路徑配置
# s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
# 需要依賴的三方庫(kù)
# s.dependency "JSONKit", "~> 1.4"

end
  1. 將工程 push 到遠(yuǎn)程烟馅,并且打上 tag(必須打上 tag,且和 .podspec 中的版本號(hào)一致)荐吉。

管理私有庫(kù)

  1. 在遠(yuǎn)程新建一個(gè)倉(cāng)庫(kù) specRepo焙糟,這個(gè)倉(cāng)庫(kù)專門只用來(lái)存放各個(gè)模塊的 .podspec 文件。

  2. 通過(guò)命令 pod repo add privateSpec https://gitlab.com/xxx/specRepo.git 在本地 ~/.cocoapods/repos 下目錄名為 privateSpec 的文件夾下克隆遠(yuǎn)程 git 倉(cāng)庫(kù)样屠。

privateSpec.png
  1. 進(jìn)入模塊 ModuleA 根目錄下穿撮,通過(guò)命令 pod repo push privateSpec ModuleA.podspecModuleA.podspec 推送到第 2 步的 privateSpec 倉(cāng)庫(kù)中。這個(gè)命令會(huì)同時(shí)把 ModuleA.podspec 更新到遠(yuǎn)程的 git 倉(cāng)庫(kù)中痪欲。
    結(jié)果如下:
    privateSpec下的podspec文件.png
推送到遠(yuǎn)程的podspec文件.png
  1. 在模塊 ModuleA 根目錄下悦穿,通過(guò)命令 pod lib lint --no-clean 驗(yàn)證 .podspec 文件有效性。

    ps:必須將所有文件同步到遠(yuǎn)程之后才能驗(yàn)證成功业踢。如果還有報(bào)錯(cuò)栗柒,請(qǐng)自行排查。

至此,完成了創(chuàng)建及管理私有庫(kù)的所有步驟瞬沦。

測(cè)試

  1. 新建工程太伊,進(jìn)入根目錄,然后通過(guò)命令 pod init 將工程通過(guò) pod 進(jìn)行管理逛钻。此時(shí)出現(xiàn) Podfile 文件僚焦。
    pod 管理.png
  1. 打開 Podfile 文件,進(jìn)行編輯

    在最前面添加先添加管理私有庫(kù)的 specRepo 倉(cāng)庫(kù)的 git 地址曙痘,再添加 CocoaPods 倉(cāng)庫(kù)的 git 地址芳悲。
    Podfile 文件.png
  1. 通過(guò)命令 pod install 安裝私有庫(kù)。

    ps:如果 pod install 報(bào)錯(cuò)边坤,將 source 'https://gitlab.com/xxx/specRepo.git' 換成 git 形式的路徑 source 'git@gitlab.com:xxx/specRepo.git' 試試名扛。

    報(bào)錯(cuò).png

至此,測(cè)試完成茧痒。
測(cè)試工程.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肮韧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子文黎,更是在濱河造成了極大的恐慌惹苗,老刑警劉巖殿较,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耸峭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡淋纲,警方通過(guò)查閱死者的電腦和手機(jī)劳闹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)洽瞬,“玉大人本涕,你說(shuō)我怎么就攤上這事』锴裕” “怎么了菩颖?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)为障。 經(jīng)常有香客問(wèn)我晦闰,道長(zhǎng),這世上最難降的妖魔是什么鳍怨? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任呻右,我火速辦了婚禮,結(jié)果婚禮上鞋喇,老公的妹妹穿的比我還像新娘声滥。我一直安慰自己,他們只是感情好侦香,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布落塑。 她就那樣靜靜地躺著纽疟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪憾赁。 梳的紋絲不亂的頭發(fā)上仰挣,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音缠沈,去河邊找鬼膘壶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛洲愤,可吹牛的內(nèi)容都是我干的颓芭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼柬赐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼亡问!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起肛宋,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤州藕,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后酝陈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體床玻,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年沉帮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锈死。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡穆壕,死狀恐怖待牵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喇勋,我是刑警寧澤缨该,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站川背,受9級(jí)特大地震影響贰拿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜渗常,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一壮不、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧皱碘,春花似錦询一、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)菱阵。三九已至,卻和暖如春缩功,著一層夾襖步出監(jiān)牢的瞬間晴及,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工嫡锌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虑稼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓势木,卻偏偏與公主長(zhǎng)得像蛛倦,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啦桌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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

  • Cocoapods是非常好用的一個(gè)iOS依賴管理工具溯壶,使用它可以方便的管理和更新項(xiàng)目中所使用到的第三方庫(kù),以及將自...
    Nash33閱讀 2,086評(píng)論 0 50
  • 背景 上一篇博客最新的CocoaPods的使用教程(一)里主要講解了CocoPods得簡(jiǎn)單的日常使用甫男。但是我們經(jīng)常...
    Dely閱讀 5,820評(píng)論 11 34
  • 項(xiàng)目組件化贮聂、平臺(tái)化是技術(shù)公司的共同目標(biāo)橙弱,越來(lái)越多的技術(shù)公司推崇使用pod管理第三方庫(kù)以及私有組件圣贸,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 21,871評(píng)論 0 39
  • 目錄 環(huán)境 TL;DR(步驟概述)1宝当、創(chuàng)建示例工程2腮恩、編寫 Pod 庫(kù)3侯嘀、Build 項(xiàng)目后彤灶,在 Demo 工程中...
    Vinc閱讀 6,138評(píng)論 3 7
  • 轉(zhuǎn)自wtlucky的博客 Cocoapods是非常好用的一個(gè)iOS依賴管理工具惰许,使用它可以方便的管理和更新項(xiàng)目中所...
    林初盛閱讀 776評(píng)論 1 6