[用Cocoapods并結(jié)合Github管理,導(dǎo)入,更新,下載自己的SDK]

??由來(lái):你有自己的SDK可供人下載使用,通過(guò)Github,你雖然可以實(shí)現(xiàn)Github上的上傳與管理(可見(jiàn)文章:[用github上傳并管理自己的項(xiàng)目]),然而現(xiàn)在你想將該SDK上傳給cocoapods以供別人pod導(dǎo)入,更新和使用.

<一>準(zhǔn)備工作:

確保你的客戶(hù)端安裝有Github桌面版并登錄,在網(wǎng)頁(yè)登錄上你的Github賬號(hào). 并準(zhǔn)備好你需要上傳的SDK文件內(nèi)容.打開(kāi)終端以備開(kāi)始.

<二>詳細(xì)過(guò)程:

1.0 ?SDK的創(chuàng)建目的,就是滿(mǎn)足別人的需求,以幫助他人或者自己在開(kāi)發(fā)項(xiàng)目時(shí)可以通過(guò)有效的第三方來(lái)更好更快的完善,開(kāi)發(fā)項(xiàng)目.所以,在完成核心代碼的編寫(xiě)后,按照比較的合理的操作方式,你有必要寫(xiě)一份用來(lái)展示自己SDK核心,主要作用的Demo,以幫助他人更好的認(rèn)識(shí),學(xué)習(xí)它.所以,如果此時(shí)你已經(jīng)完成了這個(gè)步驟,那么,此時(shí)的Demo文件的框架結(jié)構(gòu)應(yīng)該是下圖所示的:

創(chuàng)建Demo

2.0 ?可以暫時(shí)把文件放起,進(jìn)入真正的創(chuàng)建Github代碼倉(cāng)庫(kù)并關(guān)聯(lián)Cocoapods的階段.其初期的過(guò)程更是對(duì)[用github上傳并管理自己的項(xiàng)目]的重復(fù).進(jìn)入Github個(gè)人主頁(yè),點(diǎn)擊Repositories然后點(diǎn)擊New進(jìn)入倉(cāng)庫(kù)創(chuàng)建界面:

進(jìn)入倉(cāng)庫(kù)編輯界面

3.0 ?根據(jù)下圖詳細(xì)提示,對(duì)倉(cāng)庫(kù)進(jìn)行編寫(xiě),在這里注意一點(diǎn)->※為了方便,也是規(guī)范整體結(jié)構(gòu),你要保證這里的 Repository name 要和后面的 .podspec 文件里的文件名,還有你的核心文件的文件名相一致:

編輯倉(cāng)庫(kù)

4.0 ?倉(cāng)庫(kù)創(chuàng)建成功的初始模樣就如下圖所示,然后點(diǎn)擊右上方 Clone or download 下的Open in Desktop 將整個(gè)倉(cāng)庫(kù)下載到Github桌面版并打開(kāi):

初始狀態(tài)

5.0 ?下圖所示下載到桌面并打開(kāi)后的大體模樣,直到目前為止,你已經(jīng)有了兩個(gè)文件,1??你之前所放起的Demo文件;2??你新創(chuàng)建并下載,而且將會(huì)是最終提交的文件YourSDK.接下來(lái),你就需要將兩個(gè)文件合并,實(shí)際上就是需要將Demo文件的主題部分手動(dòng)拖動(dòng)到新的 YourSDK 文件中就可以:

下載到桌面并打開(kāi)

6.0? 具體合并過(guò)程可見(jiàn)下圖,在這里有個(gè)要點(diǎn)需要作出特別說(shuō)明->在原Demo文件中,核心文件夾名為 YourSDKFiles ,在拖動(dòng)到Y(jié)ourSDK文件夾時(shí),我將其更改為同名文件 YourSDK ,那么問(wèn)題來(lái)了,在Demo里面的 YourSDKFiles 還是存在的,但是里面的東西卻不能顯示了,所以在這里,需要重新打開(kāi)Demo文件,并重新導(dǎo)入一遍核心文件? YourSDK .

合二為一

7.0 ?一切準(zhǔn)備妥當(dāng),接下來(lái),就需要將新的 YourSDK 上傳并異步更新到Github上去,在未提交界面,請(qǐng)注意一點(diǎn)->必須寫(xiě)入 Summary 或者 Description 兩者中的任意一項(xiàng),點(diǎn)擊 commit 完成后,在點(diǎn)擊 Sync 異步更新:

提交并更新

8.0 ?提交完成后,回到網(wǎng)頁(yè)界面并刷新,獲取到最新的倉(cāng)庫(kù)模樣,即如下圖所示:

刷新頁(yè)面

9.0 ?其實(shí),以上幾個(gè)步驟就是我在上一節(jié)所說(shuō)的用 Github 上傳并管理自己項(xiàng)目的步驟,那么,接下來(lái)的步驟就是真正讓你的倉(cāng)庫(kù)與Cocoapods關(guān)聯(lián)的關(guān)鍵所在.

首先,將一點(diǎn)核心的文件,那就是一個(gè)叫 .podspec 的文件,通過(guò)下圖的比對(duì),一個(gè)倉(cāng)庫(kù)能不能實(shí)現(xiàn)與Cocoapods的關(guān)聯(lián),關(guān)鍵之處就在于一個(gè)屬于該倉(cāng)庫(kù)的 .podspec 文件;

所以,接下來(lái)的所有操作基本就是圍繞 .podspec 文件來(lái)進(jìn)行的了:

發(fā)現(xiàn)核心

10.0 ?先來(lái)自己辨識(shí)下這個(gè)文件,直接點(diǎn)擊打開(kāi)別人已經(jīng)完成的 .podspec 文件(我點(diǎn)開(kāi)的是MJ大神MJRefresh框架里podspec文件),看一下里面的秘密.

注意->1??直接看里面的內(nèi)容即可,第一行中的東西每個(gè)podspec文件并無(wú)差異, 往下看, s.name ,這個(gè)就是上面我所說(shuō)的要與 Repository name 保持一致的SDK名.

注意->2??在接下來(lái)的操作中,我將會(huì)直接拷貝別人的podspec文件,并根據(jù)自己的內(nèi)容進(jìn)行合理修改.但是,通過(guò)終端,你也可以通過(guò)指令進(jìn)行創(chuàng)建:

pod spec create YourSDK.podspec

并用一下指令對(duì)其進(jìn)行修改等操作,之后將會(huì)提到:

vi? YourSDK.podspec


認(rèn)識(shí)pod spec

11.0 ?保持podspec與整體文件和核心文件的命名一致, 在終端中 cd 該文件,找到后 進(jìn)行如下操作,進(jìn)入到podspec文件里:

vi? YourSDK.podspec


創(chuàng)建podspec

12.0 ?進(jìn)入到主podspec界面后,如下圖,點(diǎn)擊鍵盤(pán)上的 i (insert) 就可以開(kāi)始對(duì)其進(jìn)行刪除或者輸入的操作.命名,版本號(hào),摘要,描述,網(wǎng)頁(yè)地址,證書(shū),平臺(tái),作者信息,源地址,資源文件,arc的選擇等等.依次根據(jù)實(shí)際情況依次修改填寫(xiě).

注意->如果在終端創(chuàng)建,會(huì)有更多的可供選項(xiàng),內(nèi)容更多,很多東西對(duì)我們正在希望得到的作用并無(wú)太多幫助,盡量將其簡(jiǎn)化即可.

在修改完成并確認(rèn)無(wú)誤后,點(diǎn)擊 Esc 鍵,然后輸入 :w 保存, :q 退出:

編輯podspec

13.0 ? 在完成保存并退出后,首先要做的就是打標(biāo)簽,將 tag push 到Github上.通過(guò)以下四步即可:

git tag '0.0.1'

git add *

git commit -m 'add tag'

git push origin 0.0.1


打上標(biāo)簽

14.0 ?接下來(lái),在創(chuàng)建完善podspec并給Github打完標(biāo)簽后,就可以把該倉(cāng)庫(kù)作為分支推送給Cocoapods.

有以下操作->1??對(duì)打上的標(biāo)簽與podspec標(biāo)記的標(biāo)簽進(jìn)行比驗(yàn)證,通過(guò)以下指令進(jìn)行:

pod lib lint

如果成功,會(huì)返回一句如下結(jié)構(gòu)的信息:

-> YourSDK (0.0.1)

2??執(zhí)行下圖中 pod trunk push 命令,真正執(zhí)行分支的推送操作.當(dāng)顯示 has been pushed 時(shí),即證明推送成功.

3??返回到網(wǎng)頁(yè)界面,刷新該倉(cāng)庫(kù).點(diǎn)擊 Brand:master ,再找到 Tags 并點(diǎn)擊,就會(huì)發(fā)現(xiàn)你所打的標(biāo)簽號(hào).


推送分支

15.0 ?返回到終端,在終端里執(zhí)行如下指令

pod search YourSDK

如下圖,即證明,此時(shí)你已經(jīng)成功關(guān)聯(lián)你的SDK到Cocoapods.

搜索可見(jiàn)

<三>常見(jiàn)錯(cuò)誤:

在這個(gè)操作中,其實(shí)有一些坑的,而且,這些坑都比較集中的出現(xiàn)在執(zhí)行 pod trunk push 也就是推送分支的過(guò)程中.接下來(lái),我將我所遇到的一些常見(jiàn)坑給大家填一下,有不周之處,望各位指正.

1.0 ?錯(cuò)誤1??:核心文件沒(méi)有正確匹配

- ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.

? ? ? ?解決1??:手動(dòng)導(dǎo)入

手動(dòng)導(dǎo)入文件

2.0 ?錯(cuò)誤2??:由于警告,未通過(guò)認(rèn)證

YourSDK did not pass validation ,due to 1 wanrings (but you can use --allow-warnings to ignore them)

? ? ? ?解決2??:重新執(zhí)行下面指令

pod trunk push YourSDK.podspec? --allow-warnings



<四>補(bǔ)充:

整個(gè)過(guò)程其實(shí)還是比較容易理解的,就是將Github上的東西拿一份給Cocoapods托管,重點(diǎn)和難點(diǎn)就是在建立連接的部分.不過(guò),這個(gè)過(guò)程的順利進(jìn)行,需要你對(duì)Github上的文件結(jié)構(gòu)有充分的認(rèn)識(shí),還需要較為熟練的使用Github桌面版(Github Desktop).

同時(shí),還有一點(diǎn)必須說(shuō)明,這個(gè)過(guò)程在Cocoapods亦或者Github,還有終端的操作上,所用到的東西其實(shí)十分有限的,需要平時(shí)的積累,觀察與總結(jié).

如果能十分有譜的使用某一管理工具對(duì)自己的工作成果或者學(xué)習(xí)成果,進(jìn)行有效的管理,引導(dǎo)的話(huà),這對(duì)你之后的工作和學(xué)習(xí)都是大有裨益的,很多操作中將會(huì)起到事半功倍的效果.

諸君共勉!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容