使用CocoaPods打造元件私有倉庫

_花菜_發表於2018-07-19

??

❤️ 發表於某書2017年 從某書搬家遷移過來

CocoaPods簡介

CocoaPods對於每一名iOS開發者來說再熟悉不過了,是一個可以輕鬆解決第三方依賴庫的工具,安裝方法和基本指令在此不贅述了,本文簡介的是CocoaPods管理基本原理及設計打造專案元件私有倉庫。簡單說就是在GitHub上面有個Spec Repo,它裡面包括成千上萬的podspec檔案索引目錄。然後我們在專案整合的時候可以通過它去找到我們需要的開原始碼和自動進行相關配置。

第一次安裝的時候會下載CocoaPods到本地。

Setting up CocoaPods master repo
$ /usr/bin/git clone https://github.com/CocoaPods/Specs.git master --progress
Cloning into 'master'...
remote: Counting objects: 1301071, done.
remote: Compressing objects: 100% (169/169), done.
Receiving objects:  98% (1275050/1301071), 396.42 MiB | 559.00 KiB/s
複製程式碼

安裝過程中其中一步就是Clone這個標準倉庫,我們簡稱master repo。存放在這個repo中的專案是均開源的,任何根據模組地址尋找到專案都是可下載的。我們把podspec檔案上傳給CocoaPods的master上,當別人配置好CocoaPods就會把我們的podspec.json下載到~/.cocoapods/repos/master/下,使用者要使用Alamofire查詢本地~/.cocoapods/repos/master/ 找到這個Alamofire.podspec.json檔案根據內容下載配置。

使用CocoaPods打造元件私有倉庫

模組說明書(.podspec檔案)

本文以Alamofire開源庫為事例介紹 CocoaPods 管理專案所需檔案。CocoaPods根據模組說明書管理來定位專案地址。

使用CocoaPods打造元件私有倉庫

使用CocoaPods打造元件私有倉庫

為專案建立一個spec檔案,在終端執行?命令會生成一個test.podspec檔案,實際建立該檔案要保持模組說明書名稱和庫名稱一致。

$ pod spec create test
複製程式碼

podspec檔案其中最為重要的項為tag和source,因為podspec檔案中根據Git版本控制的專案需要tag。模組說明書詳細配置請移步官方說明檢視,裡面寫的很清楚,還有更多進階配置方法,也不作為本文重點。CocoaPods同時提供另外一條指令,通過建立一個Xcode的workspace來將Demo工程和我們的Pods工程連線起來,供我們開發使用。?

$ pod lib create TestLib
複製程式碼

當庫開發完成準備釋出之前,需要檢查.podspec是否符合規範的,pod lib lint 和 pod spec lint 均可驗證,不同之處是前者無需網路,而後者將驗證其他庫和庫tag值相關問題。當存在任意error或者warning均不能通過驗證,--allow-warnings允許忽略警告,--verbose展示驗證過程詳細資訊,當通過Pass Validate,表面庫配置成功可以釋出。

$ pod lib lint --allow-warnings --verbose
複製程式碼

使用CocoaPods打造元件私有倉庫

Trunk服務

我們如果是第一次在這臺電腦釋出程式碼庫,需要為當前電腦註冊trunk,為後面釋出Pod做準備。

使用CocoaPods打造元件私有倉庫

官網示例 :$ pod trunk register orta@cocoapods.org 'Orta Therox' --description='macbook air'

$pod trunk register lirui050716@163.com 'Serena_R'
複製程式碼

之後你註冊的郵箱將會收到一封註冊郵件,根據提示註冊。在pod spec lint 過程通過之後就可以釋出啦。如果是開源庫釋出,會將配置檔案提交到CocoaPods Master Repo。

$ pod trunk push NAME.podspec
複製程式碼

也可以提交到指定私有倉庫。

$ pod repo push REPO [NAME.podspec]
複製程式碼

三、建立私有 Spec Repo

The CocoaPods Master Repo

This repository contains the public CocoaPods specifications.

 言歸正傳,進入本文正題 ~ 

 CocoaPods提供為私有Repo整合庫的功能,按照上面的理解,我們如果能自己建立一個類似CocoaPods的Specs Repo,把倉庫地址部署到你想允許訪問成員均可訪問的地址(有點拗口),一般為公司內網地址,或者Private地址,既能保持外界絕對隔離訪問,又使內部人員可以訪問。然後把我們公共元件的podspec檔案通過pod trunk服務更新到私有repo上,就能達到利用CocoaPods管理pod元件的目的。為演示過程,遠端地址部署為github地址,實際設計過程應該為公司私有git伺服器地址。

 上傳到自己的Repo的好處之一就是由於github訪問速度十分不穩定(淚目),更新速度會比較慢,如果遷移到國內程式碼託管伺服器上速度會大大提升,推薦開源中國碼雲。

首先在遠端git伺服器建立倉庫並和本地關聯,然後新增私有Repo:
複製程式碼

$ pod repo add REPO_NAME SOURCE_URL

使用CocoaPods打造元件私有倉庫

$ pod trunk push NAME.podspecpod repo push myPrivateRepo TestLib.podspec

使用CocoaPods打造元件私有倉庫

使用時在專案的Podfile中加上下面兩句就可以了。

source 'https://github.com/CocoaPods/Specs.git'

source 'https://github.com/Serena1993/myPrivateRepo'
複製程式碼

參考資料:

guides.cocoapods.org

www.jianshu.com/p/17d704c5a…

相關文章