我們平時(shí)會(huì)開源一些庫到github上,供自己和大家使用,為了使用更方便墓造,大家可以把比較常用的或者比較不錯(cuò)的庫支持下pod,下面以一個(gè)例子來說一下制作過程锚烦。
創(chuàng)建遠(yuǎn)程項(xiàng)目
在github上創(chuàng)建一個(gè)新倉庫
創(chuàng)建完成后:
1.cd到本地的某一個(gè)目錄觅闽,將遠(yuǎn)程項(xiàng)目clone下來;
2.cd到項(xiàng)目目錄下創(chuàng)建工程涮俄;
生成.podspec文件
在項(xiàng)目目錄下執(zhí)行下面代碼
pod spec create SSLFoundation
這時(shí)候本地會(huì)生成一個(gè)SSLFoundation.podspec文件蛉拙。
打開.podspec文件,以#開頭的是注釋彻亲,為了觀看方便我把注釋都刪掉了孕锄,編輯文件:
Pod::Spec.new do |s|
s.name = "SSLFoundation"
s.version = "0.0.1"
s.summary = "iOS 基礎(chǔ)庫"
s.description = <<-DESC
iOS 基礎(chǔ)庫,持續(xù)更新
DESC
s.homepage = "https://github.com/GitHubLcy/SSLFoundation.git"
s.license = "MIT"
s.author = { "SpringSunLcy" => "13391550973@163.com" }
s.platform = :ios, "8.0"
s.ios.deployment_target = "8.0"
s.source = { :git => "https://github.com/GitHubLcy/SSLFoundation.git", :tag => "#{s.version}" }
s.source_files = "Classes/SSLFoundationHeader.h"
s.subspec 'UI' do |ss|
ss.source_files = 'Classes/UI/*.{h,m}'
end
s.subspec 'Category' do |ss|
ss.source_files = 'Classes/Category/*.{h,m}'
end
s.frameworks = "Foundation","UIKit"
end
字段說明:
- s.name 創(chuàng)建的pod私有庫的名稱
- s.version 版本
- s.summary 庫的簡(jiǎn)單描述
- s.description 庫的詳細(xì)描述
- s.homepage 庫的地址 填寫私有庫在GitHub上的地址即可
- s.license 專利聲明,一般填寫MIT 即可
- s.author 作者信息 填寫方式 { "SpringSunLcy" => "13391550973@163.com" } 前面名稱后面郵箱 這個(gè)用戶名郵箱最好是你注冊(cè)trunk cocoapods 過的苞尝。
- s.platform 支持的平臺(tái)和版本
- s.source 源碼地址
- s.source_files 一級(jí)文件路徑畸肆,這里很容易出問題,路徑一定要寫對(duì)宙址,這里的路徑是指從.podspec同級(jí)目錄開始算的
- s.subspec 二級(jí)文件路徑轴脐,可以對(duì)照下面的實(shí)體目錄:
- s.frameworks 依賴的系統(tǒng)frameworks
本地驗(yàn)證
pod lib lint SSLFoundation.podspec --verbose --use-libraries --allow-warnings
驗(yàn)證的時(shí)候可能會(huì)出現(xiàn)一些問題,不過別慌,錯(cuò)誤都會(huì)有提示的豁辉,像下面這樣令野,這個(gè)的錯(cuò)誤的原因就是description是空的,按照提示修改就好徽级。
lcy:SSLFoundation lcy$ pod lib lint SSLFoundation.podspec
-> SSLFoundation (0.0.1)
- ERROR | description: The description is empty.
- ERROR | [iOS] unknown: Encountered an unknown error (The `SSLFoundation` pod failed to validate due to 1 error:
- ERROR | description: The description is empty.
) during validation.
[!] SSLFoundation did not pass validation, due to 2 errors.
You can use the `--no-clean` option to inspect any issue.
驗(yàn)證通過以后有下面這樣的提示:
lcy:SSLFoundation lcy$ pod lib lint SSLFoundation.podspec
-> SSLFoundation (0.0.1)
SSLFoundation passed validation.
提交代碼
git add . && git commit -m "version 0.0.1"
git tag '1.0.0' //和上面.podspec一致
git push --tags
git push origin master
這里的tag一定不要忘記打气破,不然就會(huì)報(bào)錯(cuò)。
遠(yuǎn)程驗(yàn)證
pod spec lint SSLFoundation.podspec --verbose --use-libraries --allow-warnings
push本地的podspec文件到cocoaPods主分支上
pod trunk register *****@xx.com "SpringSunLcy"
pod trunk push SSLFoundation.podspec --use-libraries --allow-warnings
如果trunk注冊(cè)過了可以跳過注冊(cè)直接推餐抢。
推送成功提示:
--------------------------------------------------------------------------------
?? Congrats
?? SSLFoundation (0.0.1) successfully published
?? May 30th, 02:03
?? https://cocoapods.org/pods/SSLFoundation
?? Tell your friends!
--------------------------------------------------------------------------------
成功后就可以pod下來了现使,每次修改都要升版本,改一次升一次版本旷痕。
常見問題
1. [!] Unable to find a pod with name, author, summary, or description matching 'SSLFoundation '
podspec已經(jīng)推送到遠(yuǎn)程碳锈,但是使用pod search命令不能搜到上傳的庫可以使用 rm ~/Library/Caches/CocoaPods/search_index.json刪除索引,然后再使用pod search欺抗,等一會(huì)兒就能出現(xiàn)了售碳。
項(xiàng)目地址:https://github.com/GitHubLcy/SSLFoundation.git
參考文章:
http://www.reibang.com/p/7672943d8808
http://www.reibang.com/p/408ac99e5e51