本文主要介紹的內容是如何使用Cocoapods搭建私有Spec倉庫, 涉及私有Pod提交以及私有Pod版本更新苞轿。平常開發(fā)中常用的使用場景就是大家口中經常提到的“組件化開發(fā)”钉凌。
私有Pod創(chuàng)建步驟:
- 依賴git托管平臺管理私有Spec倉庫寸癌;
- 創(chuàng)建Pod的所需要的項目工程文件;
- 創(chuàng)建私有的Spec倉庫管理podspec文件;
- 創(chuàng)建私有podspec文件并編輯相關內容汰扭;
- 驗證podspec文件的有效性囤躁;
- 提交podspec文件至私有spec倉庫冀痕;
- 測試使用已提交的私有pod;
- 私有pod版本更新
依賴遠程或本地git托管平臺
私有Spec倉庫需要依托于git托管平臺,本文使用的是碼云(OSChina提供托管平臺)進行演示喊式。
在碼云上新建新的項目 MBKitSpace笆包。
創(chuàng)建完成之后在Terminal中執(zhí)行如下命令:
# pod repo add [Private Repo Name] [GitHub HTTPS clone URL]
pod repo add MBKitSpace https://git.oschina.net/YuriZhang/mbkitspace.git
如果成功的話進入到 ~/.cocoapods/repos 目錄下就可以看到 MBKitSpace 這個目錄了。至此第一步創(chuàng)建私有Spec Repo完成了腊尚。
創(chuàng)建私有的項目工程文件
第二步吨拗,如果有現(xiàn)有的項目,并且還在git下進行管理的可以忽略這一步婿斥。如果沒有劝篷,那就新建一個或者拖入一個希望進行管理的組件。
在功能穩(wěn)定后在當前分支打tag民宿,并push到遠程倉庫
創(chuàng)建私有Pod的podspec
首先娇妓,進入到工程的根目錄下,即 ~/.cocoapods/repos/MBKitSpace
活鹰。
執(zhí)行 pod spec create 工程名
, 創(chuàng)建成功后會在工程的根目錄下創(chuàng)建 MBKitSpace.podspec 文件哈恰。
常用podspec文件的設置:
Pod::Spec.new do |s|
# 私有pod名稱
s.name = "MBKit"
# 當前版本號
s.version = "0.0.2"
# 項目描述
s.summary = " just a summary"
# 項目簡介
s.description = <<-DESC
just a description
DESC
# 倉庫首頁地址
s.homepage = "http://git.oschina.net/YuriZhang"
# license
s.license = { :type => "MIT", :file => "LICENSE" }
# 作者信息
s.author = { "Author" => "Email" }
# 平臺
s.platform = :ios
# 平臺版本
s.platform = :ios, "8.0"
# 倉庫源
s.source = { :git => "https://git.oschina.net/YuriZhang/mbkitspace.git", :tag => "#{s.version}" }
# 代碼源文件地址,**/*表示Classes目錄及其子
s.source_files = "MBKitTest", "MBKitTest/**/*.{h,m}"
s.exclude_files = "Classes/Exclude"
如何添加資源文件
1.添加xib
在pod中,xib不能當成源文件(即s.source_files),否則pod install之后會報錯"Unable to run command 'StripNIB xxx.nib' - this target might include its own product".所以必須要將xib放入資源文件中(即s.resources)
使用此方式后,雖然可以在不改變原xib任何代碼的情況下直接使用,但是需要將xib中使用到的圖片文件拷貝到當前項目的Assets.xcassets中
2.添加圖片
方式1:類似于xib,不需其它操作,將用到圖片添加到當前項目Assets.xcassets中;
方式2:將圖片放入s.Resource(或者s.resource_bundles)中
驗證podspec文件有效性
-
執(zhí)行
pod lib lint
輸出如下結果即為通過:
注:如果出現(xiàn)當前私有庫依賴某一個私有庫的時候需要執(zhí)行以下命令
pod lib lint --verbose --no-clean --use-libraries --allow-warnings --sources='私有庫 源,https://github.com/CocoaPods/Specs'
-
執(zhí)行
pod spec lint
輸出如下結果即為通過:
如果以上兩步全部通過志群,就證明podspec文件配置成功蕊蝗。
提交podspec至私有倉庫
在podspec所出文件目錄執(zhí)行 pod repo push MBKitSpace MBKit.podspec
執(zhí)行完成之后這個組件庫就添加到我們的私有Spec Repo中了,可以進入到~/.cocoapods/repos/MBKitSpace目錄下查看赖舟,就可以看到提交的對應版本信息了蓬戚。
至此,我們的這個組件庫就已經制作添加完成了宾抓。
使用私有倉庫
-
執(zhí)行
pod search MBKit
查詢私有倉庫
-
創(chuàng)建Podfile文件子漩,在 Podfile 文件開頭中添加:
source 'https://git.oschina.net/YuriZhang/mbkitspace.git' source 'https://github.com/CocoaPods/Specs.git'
如果不添加官方庫地址,若私有庫的類庫的子依賴石洗,依賴了公有庫某個類庫幢泼,會導致pod install失敗。
更新私有倉庫
首先讲衫,更新的場景肯定是在原有項目的基礎上進行了業(yè)務的擴展或者原有功能的改進缕棵。
具體的操作步驟如下:
- 首先修改podspec文件中的s.version;
- 新功能增加或原有功能改進涉兽,打tag并push到遠程倉庫招驴;
- 驗證podspec文件的有效性
- 推送podspec至遠程倉庫
常用的pod指令
- 顯示本地repo列表
pod repo list
- 刪除本地repo
pod repo remove <REPO_NAME>
- 更新某個repo
pod repo update <REPO_NAME>
坑!大坑枷畏!
- 提交成功后搜索不到結果
[!] Unable to find a pod with name, author, summary, or description matching `Trangram`
解決辦法:
執(zhí)行 rm ~/Library/Caches/CocoaPods/search_index.json
成功后重新搜索别厘。
-
pod lib lint
報錯
ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.
解決辦法:重新打開xxx.podspec文件編輯一下,確定共享文件路徑沒有錯誤拥诡,然后再上傳到github上驗證触趴。
-
pod lib lint
報錯
WARN | description: The description is equal to the summary.
解決辦法: 重新打開xxx.podspec文件編輯一下氮发,確定s.summary內容與s.description不相同
- 在私有庫引用了私有庫的情況下,在驗證和推送私有庫的情況下都要加上所有的資源地址冗懦,不然pod會默認從官方repo查詢爽冕。
pod spec lint --sources='私有倉庫repo地址,https://github.com/CocoaPods/Specs'
pod repo push 本地repo名 podspec名 --sources='私有倉庫repo地址,https://github.com/CocoaPods/Specs'
- 引用自己或第三方的framework或.a文件時
在podsepc中應該這樣寫:
s.ios.vendored_frameworks = "xxx/**/*.framework"
s.ios.vendored_libraries = "xxx/**/*.a”
更多坑請移步這里查看披蕉。