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

題內(nèi)話

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

我的思考

很多文章的標題都是說創(chuàng)建私有庫,我覺得這類標題不夠準確。應該是“創(chuàng)建及管理私有庫”比較準確。從“創(chuàng)建及管理私有庫”這點就可以看出,我們需要分成兩個部分來處理。

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

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

要記住的是,這個配置文件中的配置信息只針對這個私有庫本身展開,比如私有庫的創(chuàng)建者信息,版本號是多少,倉庫地址在哪,需要導入哪些系統(tǒng)庫和三方庫等等。

可以參考 AFNetworking 的配置文件。

第二部分:管理私有庫

這里說的管理私有庫,其實就是存放所有私有庫的配置文件。目的是為了在項目中需要使用一些私有庫時,你需要知道從哪里找到這些私有庫一樣。類似于,當我們使用一些第三方庫的時候,我們會通過 CocoaPods 找到并導入這些第三方庫一樣。

這兩部分既是相互獨立又是相互關聯(lián)的。你創(chuàng)建私有庫就只管創(chuàng)建,不用管怎么去管理這個私有庫,那不是它本身的職責。創(chuàng)建完成后,管理的職責就交給了第二部分。

步驟

創(chuàng)建私有庫

  1. 新建工程,編寫實現(xiàn)代碼。(因為是私有的,所以工程應該放在遠程的私有倉庫中。)
文件路徑.png
Person頭文件.png
Person實現(xiàn)文件.png
遠程倉庫.png
  1. 創(chuàng)建 .podspec 文件。(一般習慣將模塊名作為文件名,這里為 ModuleA.podspec)

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

    內(nèi)容如下:

Pod::Spec.new do |s|

# 模塊名
s.name         = "ModuleA"
# 版本號。需要注意的是:當倉庫代碼 push 到遠程倉庫的時候,需要打上 tag。tag 和 版本號必須一致?。。?s.version      = "0.0.1"
# 簡短描述
s.summary      = "A short description of ModuleA."
# 模塊主頁,如 https://gitlab.com/xxx/ModuleA
s.homepage     = "http://EXAMPLE/ModuleA"
# license 類型
s.license      = { :type => "MIT", :file => "FILE_LICENSE" }

# 創(chuàng)建者信息
s.author             = { "姓名" => "郵箱地址" }
# 平臺信息,后面的數(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"

# 遠程倉庫路徑
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 庫
# s.libraries = "iconv", "xml2"

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

end
  1. 將工程 push 到遠程,并且打上 tag(必須打上 tag,且和 .podspec 中的版本號一致)。

管理私有庫

  1. 在遠程新建一個倉庫 specRepo,這個倉庫專門只用來存放各個模塊的 .podspec 文件。

  2. 通過命令 pod repo add privateSpec https://gitlab.com/xxx/specRepo.git 在本地 ~/.cocoapods/repos 下目錄名為 privateSpec 的文件夾下克隆遠程 git 倉庫。

privateSpec.png
  1. 進入模塊 ModuleA 根目錄下,通過命令 pod repo push privateSpec ModuleA.podspecModuleA.podspec 推送到第 2 步的 privateSpec 倉庫中。這個命令會同時把 ModuleA.podspec 更新到遠程的 git 倉庫中。
    結果如下:
    privateSpec下的podspec文件.png
推送到遠程的podspec文件.png
  1. 在模塊 ModuleA 根目錄下,通過命令 pod lib lint --no-clean 驗證 .podspec 文件有效性。

    ps:必須將所有文件同步到遠程之后才能驗證成功。如果還有報錯,請自行排查。

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

測試

  1. 新建工程,進入根目錄,然后通過命令 pod init 將工程通過 pod 進行管理。此時出現(xiàn) Podfile 文件。
    pod 管理.png
  1. 打開 Podfile 文件,進行編輯

    在最前面添加先添加管理私有庫的 specRepo 倉庫的 git 地址,再添加 CocoaPods 倉庫的 git 地址。
    Podfile 文件.png
  1. 通過命令 pod install 安裝私有庫。

    ps:如果 pod install 報錯,將 source 'https://gitlab.com/xxx/specRepo.git' 換成 git 形式的路徑 source 'git@gitlab.com:xxx/specRepo.git' 試試。

    報錯.png

至此,測試完成。
測試工程.png
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容