1.前期工作
- 擁有
github
帳號(hào)(若沒(méi)有,前往github.com注冊(cè)即可) - 事先將
code
準(zhǔn)備好,如果是.a
或者framework
動(dòng)靜態(tài)庫(kù),就需要將庫(kù)提前編譯好,并且將 模擬器 和 真機(jī) 的庫(kù)進(jìn)行合并(lipo -create 路徑1 路徑2 -output 合并文件路徑
)甚亭,這樣才能讓所集成的app
集成一個(gè)庫(kù)進(jìn)而支持更多的 架構(gòu)。否則第一是在上傳檢測(cè)podspec
時(shí)會(huì)有警告击胜,二是對(duì)于封裝性來(lái)考慮的話就是支持不夠狂鞋,導(dǎo)致沒(méi)人會(huì)愿意使用。 - 說(shuō)明:這里我們以 framework 靜態(tài)庫(kù)為例潜的。
2.準(zhǔn)備工作和配置相關(guān)信息
- 在github上創(chuàng)建工程
-
打開(kāi)終端將遠(yuǎn)程倉(cāng)庫(kù)克隆到本地
- 在git倉(cāng)庫(kù)目錄下創(chuàng)建.podspec配置文件(名稱和工程名保持一致)
$ cd XXXFramework
$ pod spec create XXXFramework
- 將已經(jīng)準(zhǔn)備好的 framework 添加到git目錄下骚揍,然后執(zhí)行命令提交
$ git add . // 提交所有添加的文件
$ git commit -m "描述信息" // 提交修改
$ git tag '1.0.0' // 為當(dāng)前版本標(biāo)記tag, 這個(gè)是一定要做的!!! 因?yàn)閜od需要根據(jù)版本號(hào)確定引用
$ git push --tags // 提交當(dāng)前標(biāo)記的tag
$ git push origin master // push修改到遠(yuǎn)程倉(cāng)庫(kù),git push 也可以
- 使用終端或者
Sublime
編輯XXXFramework.podspec文件
進(jìn)行信息配置
Pod::Spec.new do |s|
s.name = "XXXFramework"
s.version = "1.0.0" // 這個(gè)一定要與當(dāng)前版本的tag相對(duì)應(yīng)
s.summary = "這里寫(xiě)簡(jiǎn)介信息"
s.description = <<-DESC
這里寫(xiě)描述信息啰挪,并且盡量保證比簡(jiǎn)介信息要更多更全面信不,否則后面驗(yàn)證會(huì)有警告(雖然警告沒(méi)有影響,但是我們盡量做到驗(yàn)證的時(shí)候沒(méi)有警告)亡呵。
DESC
s.homepage = "github的項(xiàng)目地址"
s.license = 'MIT'
s.author = { "github的帳號(hào)" => "github帳號(hào)對(duì)應(yīng)的郵箱" }
s.source = { :git => "github上面的對(duì)應(yīng)工程的git地址(例如:https://github.com/xxxx/XXXFramework.git)", :tag => s.version }
s.platform = :ios
s.ios.deployment_target = '8.0'
# s.osx.deployment_target = '10.7'
s.requires_arc = true
#s.source_files = 'WZMarqueeView/*'
# s.resources = 'Assets'
# s.ios.exclude_files = 'Classes/osx'
# s.osx.exclude_files = 'Classes/ios'
# s.public_header_files = 'Classes/**/*.h'
s.vendored_frameworks = "RoyFramework.framework"
s.frameworks = "Foundation", "UIKit"
end
ps: 這里面用不到的可以直接注釋掉(#).這里對(duì)可能用到的配置進(jìn)行說(shuō)明
s.name // 導(dǎo)入pod后的目錄名
s.version // 當(dāng)前版本號(hào)
s.license // 類型抽活,這里直接填寫(xiě)MIT
s.author // 用戶信息
s.source // 所引用的代碼源地址
s.platform // 適用平臺(tái)
s.ios.deployment_target // 最低的系統(tǒng)版本
s.requires_arc // 是否要求arc
s.prefix_header_file // 預(yù)編譯頭文件路徑,將該文件的內(nèi)容插入到pod的pch文件中
===重點(diǎn)====
s.source_files // 將上傳的代碼文件锰什,路徑從.podspec開(kāi)始下硕,如果是開(kāi)源的.h .m 文件,就需要寫(xiě)成路徑/*.{h,.m}, 例如"Classes/**/*.{h,m}
s.resources // 資源文件汁胆,圖片或者xib文件
s.vendored_frameworks // 本地最后自己打包的frameworks
s.frameworks // 指定需要使用的系統(tǒng)frameworks, 例如:UIKit, Foundation
s.preserve_paths // 本地自己導(dǎo)入的.a庫(kù)
s.dependency //指定依賴梭姓,如果依賴的庫(kù)不存在或者依賴庫(kù)的版本不符合要求將會(huì)報(bào)錯(cuò)
s.libraries // 指定導(dǎo)入的庫(kù),比如sqlite3
s.weak_frameworkds // 弱鏈接嫩码,比如說(shuō)一個(gè)項(xiàng)目同時(shí)兼容iOS和iOS7, 但某一個(gè)framework只有在iOS7上有誉尖,這時(shí)如果使用強(qiáng)連接,那么在iOS7上運(yùn)行就會(huì)crash, 使用weak_frameworks可以便面這種情況
通配符說(shuō)明
a{bb,bc}def.{h,m}表示四個(gè)文件abbdef.h abbdef.m abcdef.h abcdef.m
*.{h,m,mm}表示所有的.h .m .mm文件
Class/**/*.{h,m}表示Class目錄下的所有.h .m文件
3.驗(yàn)證編寫(xiě)的 podspec 文件
- 使用命令來(lái)驗(yàn)證編寫(xiě)的podspec文件是否正確
$ pod spec lint
如果出現(xiàn)--allow-warnings的警告那么執(zhí)行下面這句消除警告
$ pod spec lint --allow-warnings
如果出現(xiàn)錯(cuò)誤信息铸题,則按照提示進(jìn)行修改
-> XXXFramework (1.0.0)
XXXFramework passed validation.
出現(xiàn)上面這個(gè)顯示铡恕,則表示通過(guò)了驗(yàn)證琢感,就可以進(jìn)行下一步的操作
4.通過(guò) trunk 上傳 spec 到 cocoapods
- 查看當(dāng)前終端的git帳號(hào)是否已經(jīng)注冊(cè)trunk
$ pod trunk me
// 如果現(xiàn)實(shí)帳號(hào)信息則表示已經(jīng)注冊(cè)過(guò)就可以直接push 面的操作:例如
- Name: xxx
- Email: xxxabc123@qq.com
- Since: March 27th, 04:39
- Pods:
- xxxxxx
- Sessions:
- March 27th, 04:39 - August 2nd, 04:55. IP: 116.228.209.98
// 否則就需要注冊(cè)trunk帳號(hào)
$ pod trunk register XXX@XXX.com '名字' --verbose
// 然后收到郵件之后點(diǎn)擊進(jìn)入郵件中的鏈接出現(xiàn) ACE, YOU'RE SET UP 就表示注冊(cè)成功
- 執(zhí)行 trunk push 操作提交至 cocoapods
$ pod trunk push XXXFramework.podspec
-
等待審核,出現(xiàn)如下信息
5.驗(yàn)證
- pod repo update // 更新cocoapods本地索引
- pod search XXXFramework // 成功之后即可搜索到
- 若出現(xiàn)報(bào)錯(cuò)信息
[!] Unable to find a pod with name, author, summary, or description matching XXXFramework
則需要將之前的搜索索引刪除:
rm ~/Library/Caches/CocoaPods/search_index.json
重新搜索從遠(yuǎn)程拉取索引文件:
pod search XXXFramework
6.版本迭代和更新
- 只需要正常提交版本到 github 倉(cāng)庫(kù), 并且一定要打 tag 標(biāo)記驹针,然后更改 .podspec 中的 version 和 其他需要修改的信息 然后再次驗(yàn)證,通過(guò)之后使用 trunk 提交即可~