??由來:你有自己的SDK可供人下載使用,通過Github,你雖然可以實現Github上的上傳與管理(可見文章:[用github上傳并管理自己的項目]),然而現在你想將該SDK上傳給cocoapods以供別人pod導入,更新和使用.
<一>準備工作:
確保你的客戶端安裝有Github桌面版并登錄,在網頁登錄上你的Github賬號. 并準備好你需要上傳的SDK文件內容.打開終端以備開始.
<二>詳細過程:
1.0 ?SDK的創建目的,就是滿足別人的需求,以幫助他人或者自己在開發項目時可以通過有效的第三方來更好更快的完善,開發項目.所以,在完成核心代碼的編寫后,按照比較的合理的操作方式,你有必要寫一份用來展示自己SDK核心,主要作用的Demo,以幫助他人更好的認識,學習它.所以,如果此時你已經完成了這個步驟,那么,此時的Demo文件的框架結構應該是下圖所示的:
2.0 ?可以暫時把文件放起,進入真正的創建Github代碼倉庫并關聯Cocoapods的階段.其初期的過程更是對[用github上傳并管理自己的項目]的重復.進入Github個人主頁,點擊Repositories然后點擊New進入倉庫創建界面:
3.0 ?根據下圖詳細提示,對倉庫進行編寫,在這里注意一點->※為了方便,也是規范整體結構,你要保證這里的 Repository name 要和后面的 .podspec 文件里的文件名,還有你的核心文件的文件名相一致:
4.0 ?倉庫創建成功的初始模樣就如下圖所示,然后點擊右上方 Clone or download 下的Open in Desktop 將整個倉庫下載到Github桌面版并打開:
5.0 ?下圖所示下載到桌面并打開后的大體模樣,直到目前為止,你已經有了兩個文件,1??你之前所放起的Demo文件;2??你新創建并下載,而且將會是最終提交的文件YourSDK.接下來,你就需要將兩個文件合并,實際上就是需要將Demo文件的主題部分手動拖動到新的 YourSDK 文件中就可以:
6.0? 具體合并過程可見下圖,在這里有個要點需要作出特別說明->在原Demo文件中,核心文件夾名為 YourSDKFiles ,在拖動到YourSDK文件夾時,我將其更改為同名文件 YourSDK ,那么問題來了,在Demo里面的 YourSDKFiles 還是存在的,但是里面的東西卻不能顯示了,所以在這里,需要重新打開Demo文件,并重新導入一遍核心文件? YourSDK .
7.0 ?一切準備妥當,接下來,就需要將新的 YourSDK 上傳并異步更新到Github上去,在未提交界面,請注意一點->必須寫入 Summary 或者 Description 兩者中的任意一項,點擊 commit 完成后,在點擊 Sync 異步更新:
8.0 ?提交完成后,回到網頁界面并刷新,獲取到最新的倉庫模樣,即如下圖所示:
9.0 ?其實,以上幾個步驟就是我在上一節所說的用 Github 上傳并管理自己項目的步驟,那么,接下來的步驟就是真正讓你的倉庫與Cocoapods關聯的關鍵所在.
首先,將一點核心的文件,那就是一個叫 .podspec 的文件,通過下圖的比對,一個倉庫能不能實現與Cocoapods的關聯,關鍵之處就在于一個屬于該倉庫的 .podspec 文件;
所以,接下來的所有操作基本就是圍繞 .podspec 文件來進行的了:
10.0 ?先來自己辨識下這個文件,直接點擊打開別人已經完成的 .podspec 文件(我點開的是MJ大神MJRefresh框架里podspec文件),看一下里面的秘密.
注意->1??直接看里面的內容即可,第一行中的東西每個podspec文件并無差異, 往下看, s.name ,這個就是上面我所說的要與 Repository name 保持一致的SDK名.
注意->2??在接下來的操作中,我將會直接拷貝別人的podspec文件,并根據自己的內容進行合理修改.但是,通過終端,你也可以通過指令進行創建:
pod spec create YourSDK.podspec
并用一下指令對其進行修改等操作,之后將會提到:
vi? YourSDK.podspec
11.0 ?保持podspec與整體文件和核心文件的命名一致, 在終端中 cd 該文件,找到后 進行如下操作,進入到podspec文件里:
vi? YourSDK.podspec
12.0 ?進入到主podspec界面后,如下圖,點擊鍵盤上的 i (insert) 就可以開始對其進行刪除或者輸入的操作.命名,版本號,摘要,描述,網頁地址,證書,平臺,作者信息,源地址,資源文件,arc的選擇等等.依次根據實際情況依次修改填寫.
注意->如果在終端創建,會有更多的可供選項,內容更多,很多東西對我們正在希望得到的作用并無太多幫助,盡量將其簡化即可.
在修改完成并確認無誤后,點擊 Esc 鍵,然后輸入 :w 保存, :q 退出:
13.0 ? 在完成保存并退出后,首先要做的就是打標簽,將 tag push 到Github上.通過以下四步即可:
git tag '0.0.1'
git add *
git commit -m 'add tag'
git push origin 0.0.1
14.0 ?接下來,在創建完善podspec并給Github打完標簽后,就可以把該倉庫作為分支推送給Cocoapods.
有以下操作->1??對打上的標簽與podspec標記的標簽進行比驗證,通過以下指令進行:
pod lib lint
如果成功,會返回一句如下結構的信息:
-> YourSDK (0.0.1)
2??執行下圖中 pod trunk push 命令,真正執行分支的推送操作.當顯示 has been pushed 時,即證明推送成功.
3??返回到網頁界面,刷新該倉庫.點擊 Brand:master ,再找到 Tags 并點擊,就會發現你所打的標簽號.
15.0 ?返回到終端,在終端里執行如下指令
pod search YourSDK
如下圖,即證明,此時你已經成功關聯你的SDK到Cocoapods.
<三>常見錯誤:
在這個操作中,其實有一些坑的,而且,這些坑都比較集中的出現在執行 pod trunk push 也就是推送分支的過程中.接下來,我將我所遇到的一些常見坑給大家填一下,有不周之處,望各位指正.
1.0 ?錯誤1??:核心文件沒有正確匹配
- ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.
? ? ? ?解決1??:手動導入
2.0 ?錯誤2??:由于警告,未通過認證
YourSDK did not pass validation ,due to 1 wanrings (but you can use --allow-warnings to ignore them)
? ? ? ?解決2??:重新執行下面指令
pod trunk push YourSDK.podspec? --allow-warnings
<四>補充:
整個過程其實還是比較容易理解的,就是將Github上的東西拿一份給Cocoapods托管,重點和難點就是在建立連接的部分.不過,這個過程的順利進行,需要你對Github上的文件結構有充分的認識,還需要較為熟練的使用Github桌面版(Github Desktop).
同時,還有一點必須說明,這個過程在Cocoapods亦或者Github,還有終端的操作上,所用到的東西其實十分有限的,需要平時的積累,觀察與總結.
如果能十分有譜的使用某一管理工具對自己的工作成果或者學習成果,進行有效的管理,引導的話,這對你之后的工作和學習都是大有裨益的,很多操作中將會起到事半功倍的效果.
諸君共勉!