前言
官網(wǎng)關(guān)于這個知識點已有詳細的介紹同窘,但是對我來說:1.知識點比較凌亂 2.英文描述锈至,很多時候不能很好理解其含義搞隐。故驹愚,參照官網(wǎng)及其他 blog 親自實踐,做個總結(jié)劣纲。
幾個概念
我這里用的版本控制是 GitLab 和 GitHub 類似逢捺。
- Podfile:描述了工程中 Taget 的依賴●荆客戶端使用這個文件使用 Pod 庫劫瞳。
- Pod library:具體的庫,即通常所說的第三方庫绷柒。
- Podspec:一個描述文件志于,描述 Pod library。
- Spec Repo:存放 Podspec 的倉庫废睦。 Repository 注意和 library 區(qū)別伺绽,剛始看官方英語文檔時,沒能很好區(qū)分這兩個詞,給后面的理解造成了不是困難憔恳。
需要的組件
- Podfile(必須)
- Pod library(必須)瓤荔,一堆文件的集合净蚤,不一定是 xcode 工程钥组,可以是一個文件,或者文件夾等今瀑。一般以 project(github 叫 Repository) 形式放到 GitLab 上程梦,是一個 repo。
- Podspec(必須)
- 這三個文件是必須的 調(diào)用關(guān)系:Podfile 引用 Podspec橘荠, Podspec 引用 Pod library屿附。
- Spec Repo 一般是一個 git 庫 只存放 Podspec
現(xiàn)在來實現(xiàn)這些組件。
制作 Pod library 兩種方法
- 直接在 GitLab 新建一個 project,添加相關(guān)文件即可哥童。
- 用 CocoaPod 提供的命令
pod lib create MyLib1
一般情況下挺份,第三庫都需要demo和測試來驗證。cocopods 的這條命令幫我們完成了這些繁瑣的工作贮懈。 并且?guī)臀覀冎谱髁藢?yīng)的 podspec 參考官網(wǎng)
- 測試時匀泊,如果是 swift 的庫 注意給類和方法根據(jù)需要添加 publice 關(guān)鍵字
- 這個命令會 git pod-template 到本地,根據(jù)需要刪除 git 相關(guān)的目錄和文件朵你。
- 一般情況要將 Pod library 上傳到 自己的 GitLab各聘。
制作 Podspec 三種方法
- 上面的方法2已經(jīng)產(chǎn)生了podspec
- 用 CocoaPod 提供的命令
pod spec create Mylib1.podspec
參考官網(wǎng) - 手動創(chuàng)建一個這樣的文件
注意:
- soure URL 對應(yīng)的地址是 pod library的地址。 不是 Spec Repo 的地址
- tag 的版本號要對應(yīng)抡医。當然也可以不使用 tag
官方推薦的制作方法
官方推薦的方法步驟最多躲因,但標準規(guī)范。
- 創(chuàng)建 Spec Repo忌傻,一般就是在 GitLab 上新建一個 project大脉,github 叫 Repository。并添加
Mylib1.podspec
等spec文件 - Add your Private Repo to your CocoaPods installation
pod repo add REPO_NAME SOURCE_URL
- Add your Podspec to your repo
pod repo push REPO_NAME SPEC_NAME.podspec
注意:
- SOURCE_URL 是 Spec Repo 的地址
- 如果 spec 文件中使用了tag 確保對應(yīng)的 Pod library 打了對應(yīng)的 tag水孩。
- Spec Repo 的目錄結(jié)構(gòu) 一定注意是這樣的
.
├── Specs
└── [SPEC_NAME]
└── [VERSION]
└── [SPEC_NAME].podspec
這樣 私有庫就做好了镰矿,但是在使用時,請注意添加
source 'URL_TO_REPOSITORY'
- URL_TO_REPOSITORY 是 Spec Repo 的地址
根據(jù)文檔總結(jié)的其他方法
- 官方推薦的制作方法中的步驟2和步驟3可以不實現(xiàn)荷愕。只要在Podfile中加入
source 'URL_TO_REPOSITORY'
pod install
后會自動實現(xiàn)衡怀。可以使用Pod repo list
查看前后變化 - 直接在 Podfile 中使用 參考
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git'
這種格式
注意:
- podspec 文件必須在 Pod library 的根目錄安疗。
- 也可以這樣參考官網(wǎng)
pod 'JSONKit', :podspec => 'https://example.com/JSONKit.podspec'
- 地址可以是任何可以訪問得到的地址也可以是本地地址
- JSONKit.podspec 也可以 使用 JSONKit.podspec.json 的json格式
pod ipc spec JSONKit.podspec > JSONKit.podspec.json
看 Cocoapod 官網(wǎng)的方法
網(wǎng)站右上角分了4部分抛杨,guids 是關(guān)注的重點,guids 頁面分了四部分荐类,根據(jù)需要查找對應(yīng)部分怖现,然后細讀。
總結(jié)
細讀文檔,動手實踐發(fā)現(xiàn)有很多實現(xiàn)方法
方法 | 優(yōu)點 |
---|---|
pod 'XXX', :git=>'' | 便于直接使用 |
pod 'XXX'屈嗤,:podspec=>'.podspec' | 原生 |
pod 'XXX'潘拨,:podspec=>'.json' | 便于理解 |
specs 文件 | 便于詳細配置工程 |
specs放在本地 | 便于調(diào)試 |
創(chuàng)建 Specs Reopsitroy | 便于集中管理 |
命令總結(jié)
pod lib create MyLib1
pod spec create Mylib1.podspec
Pod repo list
pod repo add REPO_NAME SOURCE_URL
pod repo push REPO_NAME SPEC_NAME.podspec
pod ipc spec JSONKit.podspec > JSONKit.podspec.json
pod 'XXX',:podspec=>''
pod 'XXX'饶号,git=>''
pod lib lint
實踐過程
也許會遇到的問題
- dyld: lazy symbol binding failed: Symbol not found:解決方法
實踐環(huán)境
- xcode Version 10.0 (10A255)
- pod --version 1.5.3
- MacOS High Sierra 10.13.6(17G65)