iOS CocoaPods私有庫

級別: ★★☆☆☆
標(biāo)簽:「iOS」「CocoaPods」「私有庫」
作者: 憶思夢
審校: QiShare團(tuán)隊

先說下CocoaPods拉取開源庫的原理:

CocoaPods 有一個開源的索引倉庫Specs漠趁,倉庫存放著所有開源庫的各個版本的.podspec文件忍疾,.podspec文件包含中記錄著源碼的地址。首次使用CocoaPods時甥绿,會將這個文件庫克隆到本地~/.cocoapods/repos/master

  1. 在Podfile目錄下執(zhí)行 pod install 命令洗出,會從本地的索引庫查找該庫的.podsepc骄呼,如果本地不存在會從遠(yuǎn)程拉取最新的索引庫。
  2. 根據(jù)索引庫中查到的.podspec文件內(nèi)容隅茎,獲取源碼地址嫉沽。
  3. 從源碼地址拉取對應(yīng)版本的代碼。

使用是可以發(fā)現(xiàn)堂竟,首次導(dǎo)入一個開源庫時速度較慢玻佩,之后再導(dǎo)入時會很快。是因為CocoaPods在本地會有一個緩存目錄税稼,存放開源庫的源碼垮斯,首次下載后,再次導(dǎo)入該庫時扰肌,會直接從本地復(fù)制過去熊杨。

查看緩存列表使用pod cache list,緩存路徑為~/Library/Caches/CocoaPods/Pods/

私有倉庫

私有庫的創(chuàng)建

由于CocoaPods的索引倉庫是開源的夷狰,所有人都可以訪問。公司的項目如果也想使用CocoaPods管理源碼郊霎,而不開放源碼的話,我們可以通過創(chuàng)建私有倉庫來模擬官方的Specs倉庫爷绘。

步驟:

  1. 在私有g(shù)it上創(chuàng)建一個索引倉庫书劝,例:YSMSpecs进倍,用于存放索引文件。

  2. 將遠(yuǎn)程索引庫添加到本地购对,pod repo add YSMSpecs YSMSpecs_source_url猾昆。使用pod repo可以查看本地的索引倉庫列表。

    $ pod repo add YSMSpecs https://github.com/yisimeng/YSMSpecs.git
    $ pod repo
    
    master   // 公有索引倉庫
    - Type: git (master)
    - URL:  https://github.com/CocoaPods/Specs.git
    - Path: /Users/duanzengguang/.cocoapods/repos/master
    YSMSpecs  //私有索引倉庫
    - Type: git (master)
    - URL:  https://github.com/yisimeng/YSMSpecs.git
    - Path: /Users/duanzengguang/.cocoapods/repos/YSMSpecs
    
  3. 本地創(chuàng)建我們的源碼工程骡苞,可以使用pod lib create YSMKit垂蜗,創(chuàng)建一個模板工程解幽。

  4. 在模板工程里進(jìn)行開發(fā)并替換 ReplaceMe 文件贴见,修改.podspec文件(版本號,源碼地址)躲株,推送到遠(yuǎn)程源碼倉庫片部,打tag,提交霜定。源碼倉庫部署完成档悠。

  5. CocoaPods不允許有Podspecs lints錯誤,所以需要進(jìn)行Podspecs lints(翻譯不好望浩,會檢查語法錯誤)驗證辖所。這里可以使用pod lib lint或者pod spec lint,區(qū)別在于前者不會聯(lián)網(wǎng),而后者還會檢查外部的倉庫和相關(guān)的標(biāo)簽磨德。

    $ pod lib lint
    -> YSMKit (0.1.0)
    YSMKit passed validation.
    
  6. 檢查沒有錯誤之后缘回,推送.podspec文件到本地的索引倉庫,本地索引倉庫會自動push到遠(yuǎn)程索引倉庫剖张。pod repo push YSMSpecs YSMKit.podspec切诀,這一步會自動進(jìn)行pod spec lint聯(lián)網(wǎng)檢查。索引庫部分完成搔弄。

    $ pod repo push YSMSpecs YSMKit.podspec
    Validating spec
     -> YSMKit (0.1.0)
    Updating the `YSMSpecs' repo
    Already up to date.
    Adding the spec to the `YSMSpecs' repo
     - [Add] YSMKit (0.1.0)
    Pushing the `YSMSpecs' repo   // 會自動推送到遠(yuǎn)程倉庫
    
    $ pod search YSMKit
    -> YSMKit (0.1.0)
       YSMKit is my kit
       pod 'YSMKit', '~> 0.1.0'
       - Versions: 0.1.0 [YSMSpecs repo]
    

到這里私有倉庫是搞完了幅虑。

第6步如果使用pod trunk push YSMKit.podspec,會將索引庫推送到官方的Specs倉庫中顾犹。

私有庫的使用

  1. 在宿主工程的Podifle文件中引入私有庫:pod 'YSMKit'
  2. 在文件的最上方添加索引庫地址
source 'https://github.com/yisimeng/YSMSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'

然后執(zhí)行 pod install倒庵,就可以使用了。

注意: 如果用到了其他開源庫的話炫刷,一定要加上官方Specs地址擎宝,否則只會去查找私有索引庫。

私有庫的維護(hù)

后續(xù)需要更新維護(hù)倉庫代碼的流程:

  1. 在源碼工程修改代碼之后浑玛,修改.podspec文件版本號绍申,把源碼提交,打上tag,推送到遠(yuǎn)程倉庫极阅。
  2. .podspec文件提交到本地的私有索引庫中(會自動幫我們提交到遠(yuǎn)程索引庫)胃碾。
  3. 回到宿主工程,修改Podfile中的版本筋搏,執(zhí)行pod install(不行就pod update)仆百。

注意事項

  1. 在podfile文件中 增加inhibit_all_warnings!,這樣pod的工程不會顯示任何警告奔脐。
  2. 切記:swift中需要設(shè)置好訪問權(quán)限6碇堋!!
  3. 新引入一些庫之后執(zhí)行pod install髓迎,會報錯Build Settings峦朗,例如:引入Swift庫之后經(jīng)常會報的“swift version”的錯誤,需要去修改Build Setting竖般,其實可以在Podfile中的post_install中修改甚垦。
post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.2'
        end
    end
end

pre_install:編譯之前可以添加修改(還沒想到可以做哪些事情)。


了解更多iOS及相關(guān)新技術(shù)涣雕,請關(guān)注我們的公眾號:

小編微信:可加并拉入《QiShare技術(shù)交流群》艰亮。

關(guān)注我們的途徑有:
QiShare(簡書)
QiShare(掘金)
QiShare(知乎)
QiShare(GitHub)
QiShare(CocoaChina)
QiShare(StackOverflow)
QiShare(微信公眾號)

推薦文章:
iOS 簽名機(jī)制
iOS 掃描二維碼/條形碼
iOS 了解Xcode Bitcode
iOS 重繪之drawRect
奇舞周刊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市挣郭,隨后出現(xiàn)的幾起案子迄埃,更是在濱河造成了極大的恐慌,老刑警劉巖兑障,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侄非,死亡現(xiàn)場離奇詭異,居然都是意外死亡流译,警方通過查閱死者的電腦和手機(jī)逞怨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來福澡,“玉大人叠赦,你說我怎么就攤上這事「镌遥” “怎么了除秀?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長算利。 經(jīng)常有香客問我册踩,道長,這世上最難降的妖魔是什么效拭? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任暂吉,我火速辦了婚禮胖秒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘慕的。我一直安慰自己扒怖,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布业稼。 她就那樣靜靜地躺著,像睡著了一般蚂蕴。 火紅的嫁衣襯著肌膚如雪低散。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天骡楼,我揣著相機(jī)與錄音熔号,去河邊找鬼。 笑死鸟整,一個胖子當(dāng)著我的面吹牛引镊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播篮条,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼弟头,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了涉茧?” 一聲冷哼從身側(cè)響起赴恨,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伴栓,沒想到半個月后伦连,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡钳垮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年惑淳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饺窿。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡歧焦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出短荐,到底是詐尸還是另有隱情倚舀,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布忍宋,位于F島的核電站痕貌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏糠排。R本人自食惡果不足惜舵稠,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧哺徊,春花似錦室琢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至轿钠,卻和暖如春巢钓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疗垛。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工症汹, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贷腕。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓背镇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親泽裳。 傳聞我的和親對象是個殘疾皇子瞒斩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350

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