iOS CocoaPods私有庫

級別: ★★☆☆☆
標籤:「iOS」「CocoaPods」「私有庫」
做者: 憶思夢
審校: QiShare團隊php

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

CocoaPods 有一個開源的索引倉庫Specs,倉庫存放着全部開源庫的各個版本的.podspec文件,.podspec文件包含中記錄着源碼的地址。首次使用CocoaPods時,會將這個文件庫克隆到本地~/.cocoapods/repos/mastergithub

  1. 在Podfile目錄下執行 pod install 命令,會從本地的索引庫查找該庫的.podsepc,若是本地不存在會從遠程拉取最新的索引庫。
  2. 根據索引庫中查到的.podspec文件內容,獲取源碼地址。
  3. 從源碼地址拉取對應版本的代碼。

使用是能夠發現,首次導入一個開源庫時速度較慢,以後再導入時會很快。是由於CocoaPods在本地會有一個緩存目錄,存放開源庫的源碼,首次下載後,再次導入該庫時,會直接從本地複製過去。swift

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

私有倉庫

私有庫的建立

因爲CocoaPods的索引倉庫是開源的,全部人均可以訪問。公司的項目若是也想使用CocoaPods管理源碼,而不開放源碼的話,咱們能夠經過建立私有倉庫來模擬官方的Specs倉庫。bash

步驟:微信

  1. 在私有git上建立一個索引倉庫,例:YSMSpecs,用於存放索引文件。post

  2. 將遠程索引庫添加到本地,pod repo add YSMSpecs YSMSpecs_source_url。使用pod repo能夠查看本地的索引倉庫列表。ui

    $ 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. 本地建立咱們的源碼工程,可使用pod lib create YSMKit,建立一個模板工程。url

  4. 在模板工程裏進行開發並替換 ReplaceMe 文件,修改.podspec文件(版本號,源碼地址),推送到遠程源碼倉庫,打tag,提交。源碼倉庫部署完成。

  5. CocoaPods不容許有Podspecs lints錯誤,因此須要進行Podspecs lints(翻譯很差,會檢查語法錯誤)驗證。這裏可使用pod lib lint或者pod spec lint,區別在於前者不會聯網,然後者還會檢查外部的倉庫和相關的標籤。

    $ pod lib lint
    -> YSMKit (0.1.0)
    YSMKit passed validation.
    複製代碼
  6. 檢查沒有錯誤以後,推送.podspec文件到本地的索引倉庫,本地索引倉庫會自動push到遠程索引倉庫。pod repo push YSMSpecs YSMKit.podspec,這一步會自動進行pod spec lint聯網檢查。索引庫部分完成。

    $ 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 // 會自動推送到遠程倉庫 $ 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'
複製代碼

而後執行 pod install,就可使用了。

注意: 若是用到了其餘開源庫的話,必定要加上官方Specs地址,不然只會去查找私有索引庫。

私有庫的維護

後續須要更新維護倉庫代碼的流程:

  1. 在源碼工程修改代碼以後,修改.podspec文件版本號,把源碼提交,打上tag,推送到遠程倉庫。
  2. .podspec文件提交到本地的私有索引庫中(會自動幫咱們提交到遠程索引庫)。
  3. 回到宿主工程,修改Podfile中的版本,執行pod install(不行就pod update)。

注意事項

  1. 在podfile文件中 增長inhibit_all_warnings!,這樣pod的工程不會顯示任何警告。
  2. 切記:swift中須要設置好訪問權限!!!
  3. 新引入一些庫以後執行pod install,會報錯Build Settings,例如:引入Swift庫以後常常會報的「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:編譯以前能夠添加修改(還沒想到能夠作哪些事情)。


小編微信:可加並拉入《QiShare技術交流羣》。

關注咱們的途徑有:
QiShare(簡書)
QiShare(掘金)
QiShare(知乎)
QiShare(GitHub)
QiShare(CocoaChina)
QiShare(StackOverflow)
QiShare(微信公衆號)

推薦文章:
iOS 簽名機制
iOS 掃描二維碼/條形碼
iOS 瞭解Xcode Bitcode
iOS 重繪之drawRect
奇舞週刊

相關文章
相關標籤/搜索