經(jīng)過(guò)長(zhǎng)時(shí)間的開(kāi)發(fā)汪茧,學(xué)習(xí)和沉淀椅亚,都會(huì)有一些自己好用的封裝的庫(kù),但是每次都導(dǎo)入代碼過(guò)于麻煩舱污,所以我們可以創(chuàng)建我們自己的 pod
庫(kù)呀舔,再用起來(lái)就會(huì)方便很多。下面就是小白創(chuàng)建和上傳的步驟和上傳中可能出現(xiàn)的問(wèn)題解決方法扩灯。
首先創(chuàng)建自己的 trunk 賬號(hào)
pod trunk me
查看是否有 trunk
賬號(hào)媚赖,如圖1,說(shuō)明有賬號(hào)
如果查不到信息珠插,說(shuō)明沒(méi)有賬號(hào)惧磺,需要注冊(cè)賬號(hào)
pod trunk register 203***82@qq.com 'HJ'
[!] Please verify the session by clicking the link in the verification email that has been sent to 203***82@qq.com
登錄郵箱去驗(yàn)證
203***82@qq
郵箱是 GitHub 賬號(hào) 或者 碼云 賬號(hào) 'HJ'
是作者名稱,當(dāng)你上傳成功 pod
庫(kù)時(shí)顯示的名稱
創(chuàng)建項(xiàng)目上傳到 GitHub 或 碼云
項(xiàng)目的創(chuàng)建就不在這里描述了捻撑,上傳項(xiàng)目以上傳GitHub
為例
打開(kāi) GitHub 磨隘,并登錄賬號(hào)缤底。
創(chuàng)建項(xiàng)目
3.準(zhǔn)備上傳項(xiàng)目,首先在本地創(chuàng)建一個(gè)文件夾番捂,用來(lái)和 github
關(guān)聯(lián)个唧,文件夾隨意命名。
4.打開(kāi)終端白嘁,切入路徑到剛剛創(chuàng)建的文件夾中
5.開(kāi)始使用
Git
命令坑鱼,首先初始化Git
環(huán)境
git init
6.關(guān)聯(lián)Git
庫(kù),使用剛剛創(chuàng)建的Git
項(xiàng)目地址
git clone https://github.com/***/HJBaseTableView.git
然后就拉取到了項(xiàng)目的空文件夾,切換到空文件夾絮缅,然后把創(chuàng)建的項(xiàng)目?jī)?nèi)容拉進(jìn)來(lái)
7.上傳代碼文件
git add . // 添加所有改動(dòng)文件
git commit -m '提交操作的描述' // 添加改動(dòng)描述
git push // 推送到GitHub
創(chuàng)建 podspec
文件
常用的語(yǔ)句
Pod::Spec.new do |spec|
spec.name = "HJBaseTableView" // 庫(kù)名稱
spec.version = "0.0.1" // 庫(kù)版本
spec.summary = "Modules and components framework for iOS." // 庫(kù)描述
spec.authors = { 'HJ' => '203***82@qq.com' } // trunk 賬號(hào) 郵箱 (作者 : 郵箱)
spec.description = <<-DESC
一個(gè)簡(jiǎn)單的TableView 內(nèi)部采用了 FDTemplateLayoutCell 計(jì)算和緩存高度,方便創(chuàng)建和使用鲁沥。
DESC // 庫(kù)的詳細(xì)描述
spec.homepage = "https://github.com/***/HJBaseTableView" // 庫(kù)的Git地址主頁(yè)
spec.license = { :type => "MIT", :file => "LICENSE" } // 固定的 版權(quán)校驗(yàn)
spec.platform = :ios, "9.0" // 支持的最低版本 iOS
spec.source = { :git => "https://github.com/whhaijun/HJBaseTableView.git", :tag => spec.version } // 庫(kù)的Git 下載地址 和 版本號(hào)
spec.source_files = "HJBaseTableView/HJBaseTableView/**/*" // 庫(kù)的Git 資源文件(需要暴露的文件路徑,以 podspec 同級(jí)別為開(kāi)始 如 podspec文件 和第一個(gè) HJBaseTableView文件夾 同級(jí)別)
spec.swift_version = '4.0' // 可選 耕魄,支持的swift 最低版本
spec.static_framework = true // 是否是靜態(tài)庫(kù)
spec.requires_arc = true // 是否是 arc 環(huán)境
spec.dependency 'UITableView+FDTemplateLayoutCell', '1.6' // 可選 画恰,依賴的第三方庫(kù) UITableView+FDTemplateLayoutCell 和版本號(hào),版本號(hào)可選
end
需要注意的點(diǎn):
- 首先創(chuàng)建的
pod
庫(kù)吸奴,最好自己驗(yàn)證一下允扇,是否正確有誤, - 支持的最低
iOS
版本 - 支持的
swift
最低版本 - 是否有依賴的第三方庫(kù)
podspec
文件则奥,有很多字段考润,可以查看其它的文章查閱
創(chuàng)建LICENSE
版權(quán)文件
點(diǎn)擊 Review and submit 按鈕提交,然后 commit
, push
到項(xiàng)目中读处。
提交tag
版本
- 需要注意的是
tag
版本要和podspec
文件版本保持一致spec.version = "0.0.1" // 庫(kù)版本
git tag 0.0.1
git push origin 0.0.1
Releases tag
版本
校驗(yàn)podspec
文件
以上都準(zhǔn)備好之后糊治,可以開(kāi)始校驗(yàn)podspec
文件并發(fā)布pod
庫(kù)了。在終端 cd 到本地關(guān)聯(lián)項(xiàng)目路徑中
pod lib lint --allow-warnings
這一步可能會(huì)有一些問(wèn)題罚舱,但是當(dāng)時(shí)忘記記錄了井辜,大多數(shù)按照錯(cuò)誤提示都比較好改,下面有些常見(jiàn)的錯(cuò)誤:
spec.homepage
官網(wǎng)首頁(yè)地址錯(cuò)誤spec.source
下載的Git地址不正確- 提示
spec.source_files
錯(cuò)誤管闷,需要注意的是podspec
文件和source_files
文件是同級(jí)別開(kāi)始的- 如果確認(rèn)
spec.source_files
編寫一定沒(méi)有錯(cuò)誤粥脚,那么有可能就是沒(méi)有上傳tag版本或Releases tag版本版權(quán)文件錯(cuò)誤或沒(méi)有找到
上傳發(fā)布
再校驗(yàn) podspec
文件成功之后,基本就沒(méi)有什么問(wèn)題了包个,可以大多數(shù)可以一遍成功刷允。
pod trunk push HJBaseTableView.podspec --use-libraries --allow-warnings
如何有錯(cuò)誤,和上一步一樣碧囊,一樣一樣的解決恃锉,修改完錯(cuò)誤,記得更新 tag Edit Release呕臂。
沒(méi)有問(wèn)題之后就可以驗(yàn)證是否成功了破托,可以用 pod search HJBaseTableView
來(lái)查看
如果沒(méi)有找到,那就更新一下本地 pod
庫(kù)
pod repo update
pod install --repo-update
pod repo update
或pod install --repo-update
歧蒋,在項(xiàng)目中這兩個(gè)些時(shí)候可以等同土砂。如果沒(méi)有在項(xiàng)目中州既,就是用pod repo update
更新,更新可能會(huì)有點(diǎn)慢萝映。
當(dāng)有新的版本上傳時(shí)吴叶,本地的項(xiàng)目中想要更換 ,也需要先更新本地pod
庫(kù)序臂,然后再更新項(xiàng)目 蚌卤。可以使用 pod repo update
+ pod install
或 直接 pod install --repo-update
pod repo update
pod install --repo-update
pod update HJBaseTableView --verbose --no-repo-update
pod update HJBaseTableView --verbose --no-repo-update
只更新項(xiàng)目中的HJBaseTableView
第三方庫(kù)奥秆,其他的不更新逊彭,這樣就不用更新所有版本了。
刪除上傳的Pod庫(kù)构订,或者棄用pod庫(kù)
如果我們想刪除一個(gè)已有的庫(kù)侮叮,可以使用下面的指令:
pod trunk delete NAME 0.0.1 刪除某個(gè)版本
pod repo remove NAME 刪除某個(gè)版本
pod trunk deprecate NAME 棄用某個(gè)倉(cāng)庫(kù),不會(huì)刪除悼瘾,但是是下載時(shí)會(huì)有提示已棄用
/// 刪除囊榜,后面需要跟上版本號(hào)
pod trunk delete LZScaner 0.0.1
/// 刪除某個(gè)庫(kù)
pod repo remove NAME
/// 棄用某個(gè)庫(kù)
pod trunk deprecate LZScaner
如果使用 delete 指令會(huì)有下面的提醒:
WARNING: It is generally considered bad behavior to remove versions of a Pod that others are depending on!
Please consider using the `deprecate` command instead.
Are you sure you want to delete this Pod version?
>
這時(shí),輸入y亥宿,回車即可卸勺!
發(fā)布pod庫(kù)中遇到的問(wèn)題
1、運(yùn)行pod lib lint --allow-warnings
校驗(yàn) podspec文件時(shí)報(bào)錯(cuò)
xcodebuild: Returned an unsuccessful exit code. You can use '--verbose' for more information.
嘗試解決:pod spec lint ****.podspec --verbose
2烫扼、運(yùn)行pod lib lint --allow-warnings
校驗(yàn) podspec文件時(shí)報(bào)錯(cuò)
* ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code.
嘗試解決:在驗(yàn)證后面加上 --skip-import-validation
pod lib lint --allow-warnings --skip-import-validation
3孔庭、發(fā)布時(shí),運(yùn)行pod trunk push HJBaseTableView.podspec --use-libraries --allow-warnings
時(shí)報(bào)錯(cuò)
Authentication token is invalid or unverified. Either verify it with the email that was sent or register a new session.
嘗試解決:第一步 查看
pod trunk me
是否可以查看到信息材蛛。
如果pod trunk me
報(bào)錯(cuò), 需要到 注冊(cè)的 trunk 郵箱進(jìn)行驗(yàn)證(會(huì)有驗(yàn)證郵件)
4怎抛、發(fā)布時(shí) pod 成功之后卑吭,pod search CMSPaaS
報(bào)錯(cuò)時(shí)
Unable to find a pod with name, author, summary, or description matching ‘CMSPaaS’
或CocoaPods was not able to update the 'cocoapods' repo. If this is an unexpected issue and persists you can inspect it running 'pod repo update --verbose'
嘗試解決:刪除原來(lái)的查詢json文件
rm ~/Library/Caches/CocoaPods/search_index.json
再次
pod search CMSPaaS
^ 0_0 ^ -- Bright: 祝大家開(kāi)心快樂(lè)每一天。