Swift - 代碼上傳到GitHub

學(xué)會使用別人的Pods依賴庫以后榛做,你一定對創(chuàng)建自己的依賴庫躍躍欲試钱磅,今天就來揭開Pods依賴庫創(chuàng)建過程的神秘面紗革娄。
整個創(chuàng)建過程都以我實現(xiàn)的一個名稱為QPCycleScrollView跑馬燈效果的view為例利赋,步驟如下:

創(chuàng)建自己的github倉庫

CocoaPods都托管在github上(官方鏈接為:https://github.com/CocoaPods)郁妈,所有的Pods依賴庫也都依賴github,因此第一步我們需要創(chuàng)建一個屬于自己的github倉庫趾断。倉庫創(chuàng)建界面如下圖:

上圖中標(biāo)了序號的共6處拒名,對應(yīng)的說明如下:
1、Repository name
倉庫名稱芋酌,這里寫成QPCycleScrollView靡狞,必填的;
2隔嫡、Description
倉庫的描述信息,可選的甘穿;
3腮恩、倉庫的公開性
這里只能選Public,一個是因為Private是要money的温兼,再一個Private別人看不到還共享個毛秸滴;
4、是否創(chuàng)建一個默認(rèn)的README文件
一個完整地倉庫募判,都需要README說明文檔荡含,建議選上咒唆。當(dāng)然不嫌麻煩的話你也可以后面再手動創(chuàng)建一個;
5释液、是否添加.gitignore文件
.gitignore文件里面記錄了若干中文件類型全释,凡是該文件包含的文件類型,git都不會將其納入到版本管理中误债。是否選擇看個人需要浸船;
6、license類型
正規(guī)的倉庫都應(yīng)該有一個license文件寝蹈,Pods依賴庫對這個文件的要求更嚴(yán)李命,是必須要有的。因此最好在這里讓github創(chuàng)建一個箫老,也可以自己后續(xù)再創(chuàng)建封字。我使用的license類型是MIT。


上面的各項都填寫完畢后耍鬓,點擊Create repository按鈕即可阔籽,創(chuàng)建成功地界面如圖:


到這,倉庫創(chuàng)建過程就結(jié)束了界斜。

clone倉庫到本地

為了便于向倉庫中刪減內(nèi)容仿耽,需要先將倉庫clone到本地,操作方式有多種各薇,推薦使用命令行:

cd /Users/chenqianping/Desktop/src
git clone https://github.com/ChenQianPing/QPCycleScrollView.git

操作完成后项贺,github上對應(yīng)的文件都會拷貝到本地,目錄結(jié)構(gòu)為:


github上倉庫中的.gitignore文件是以.開頭的隱藏文件峭判,因此這里只能看到兩個开缎。
后續(xù)我們的所有文件增、刪林螃、改都在這個目錄下進(jìn)行奕删。

向本地git倉庫中添加創(chuàng)建Pods依賴庫所需文件

注意:以下描述的文件都要放在步驟二clone到本地的git倉庫的根目錄下面。

后綴為.podspec文件

該文件為Pods依賴庫的描述文件疗认,每個Pods依賴庫必須有且僅有那么一個描述文件完残。文件名稱要和我們想創(chuàng)建的依賴庫名稱保持一致,我的QPCycleScrollView依賴庫對應(yīng)的文件名為QPCycleScrollView.podspec横漏。

pod spec文件內(nèi)容

QPCycleScrollView.podspec的保存內(nèi)容為:

Pod::Spec.new do |s|
s.name             = "QPCycleScrollView"
s.version          = "1.0.0"
s.summary          = "CycleScrollView for Swift."
s.description      = <<-DESC
It is a CycleScrollView used on iOS, which implement by Swift.
DESC
s.homepage         = "https://github.com/ChenQianPing/QPCycleScrollView"
s.license          = 'MIT'
s.author           = { "QianPing Chen" => "pingkeke@163.com" }
s.source           = { :git => "https://github.com/ChenQianPing/QPCycleScrollView.git", :tag => s.version.to_s }
s.platform     = :ios, '9.2'
s.requires_arc = true

s.source_files = 'QPCycleScrollView/*'
s.frameworks = 'UIKit'

end

該文件是ruby文件谨设,里面的條目都很容易知道含義。

其中需要說明的又幾個參數(shù):
①s.license
Pods依賴庫使用的license類型缎浇,大家填上自己對應(yīng)的選擇即可扎拣。
②s.source_files
表示源文件的路徑,注意這個路徑是相對podspec文件而言的。

③s.frameworks
需要用到的frameworks二蓝,不需要加.frameworks后綴誉券。

如何創(chuàng)建pod spec文件

大家創(chuàng)建自己的podspec文件可以有兩個途徑:
①copy我的podspec文件然后修改對應(yīng)的參數(shù),推薦使用這種方式刊愚。
②執(zhí)行以下創(chuàng)建命令:

pod spec create QPCycleScrollView

也會創(chuàng)建名為QPCycleScrollView.podspec的文件踊跟。但是打開創(chuàng)建完的文件你就會發(fā)現(xiàn)里面的東西太多了,很多都是我們不需要的百拓。

LICENSE文件

CocoaPods強(qiáng)制要求所有的Pods依賴庫都必須有l(wèi)icense文件琴锭,否則驗證不會通過。license的類型有很多種衙传,詳情可以參考網(wǎng)站tl;dr Legal决帖。在創(chuàng)建github倉庫的時候,我已經(jīng)選擇了MIT類型的license蓖捶。

主類文件

創(chuàng)建Pods依賴庫就是為了方便別人使用我們的成果地回,比如我想共享給大家的QPCycleScrollView類,是我想提供給廣大用戶使用的俊鱼,這個類自然是必不可少的刻像。我把這個類包含的兩個文件放到一個名稱為QPCycleScrollView的文件夾中,對應(yīng)的目錄結(jié)構(gòu)如圖:


里面包含一個文件:QPCycleScrollView.swift

demo工程

為了快速地教會別人使用我們的Pods依賴庫并闲,通常需要提供一個demo工程细睡。我創(chuàng)建的demo工程放到了一個名為QPCycleScrollViewDemo的文件夾中

README.md

使用github的人應(yīng)該都熟悉這個文件,它是一個成功github倉庫必不可少的一部分帝火,使用的是markdown標(biāo)記語言溜徙,用于對倉庫的詳細(xì)說明。

以上所說的5個是創(chuàng)建Pods依賴庫所需最基礎(chǔ)的文件犀填,其中1蠢壹、2、3是必需的九巡,4图贸、5是可選但強(qiáng)烈推薦創(chuàng)建的。
添加完這些文件以后冕广,我的github本地倉庫目錄就變成了下圖所示的樣子:

提交修改文件到github

經(jīng)過步驟三疏日,向本地的git倉庫中添加了不少文件,現(xiàn)在需要將它們提交到github倉庫中去撒汉。提交過程分以下幾步:

pod驗證

執(zhí)行以下命令

set the new version to 1.0.0
set the new tag to 1.0.0

這兩條命令是為pod添加版本號并打上tag制恍。然后執(zhí)行pod驗證命令:

pod lib lint

如果一切正常,這條命令執(zhí)行完后會出現(xiàn)下面的輸出:


到此神凑,pod驗證就結(jié)束了。
需要說明的是,在執(zhí)行pod驗證命令的時候溉委,打印出了任何warning或者error信息鹃唯,驗證都會失敗瓣喊!如果驗證出現(xiàn)異常坡慌,打印的信息會很詳細(xì),大家可以根據(jù)對應(yīng)提示做出修改藻三。

本地git倉庫修改內(nèi)容上傳到github倉庫

依次執(zhí)行以下命令:

git add -A && git commit -m "Release 1.0.0."
git tag '1.0.0'
git push --tags
git push origin master

上述命令均屬git的范疇洪橘,這里不多述。如果一切正常棵帽,github上就應(yīng)該能看到自己剛添加的內(nèi)容了熄求。如下圖所示:

上傳podspec文件到CocoaPods官方倉庫中

經(jīng)過前邊的四步操作,你可能以為已經(jīng)結(jié)束了逗概,不幸的是還早著呢弟晚。
要想一個Pods依賴庫真正可用,還需要做最后一步操作逾苫,將我們剛才生成的podspec文件上傳到CocoaPods官方的Specs倉庫中卿城,
鏈接為:https://github.com/CocoaPods/Specs
打開這個鏈接你就會發(fā)現(xiàn),原來我們能使用的铅搓,以及我們使用pod search命令能搜索到的所有Pods依賴庫都會把它們的podspec文件上傳到這個倉庫中瑟押,也就是說,只有將我們的podspec文件上傳到這個倉庫中以后星掰,才能成為一個真正的Pods依賴庫多望,別人才能正常使用!
按照git的規(guī)則蹋偏,要想向別人的倉庫中添加文件便斥,必須先fork一份別人的倉庫,做完相應(yīng)地修改后威始,在push給倉庫的原作者枢纠,等到作者審核通過,然后合并到原來的倉庫中黎棠。
流程明白了以后晋渺,自然知道該怎么干了:

fork一份CocoaPods官方的Specs倉庫

進(jìn)入到剛才的官方倉庫鏈接中,點擊屏幕右上角的fork按鈕脓斩,如下圖:

然后大家會發(fā)現(xiàn)自己名下會多一份倉庫的分支木西。比如我的分支為:

將fork的倉庫clone到本地

執(zhí)行以下命令:

cd /Users/chenqianping/Desktop/src
git clone https://github.com/ChenQianPing/Specs.git

注意,大家需要將對應(yīng)的倉庫地址換成自己的随静。
這個倉庫有點大八千,需要有耐心啊吗讶。

將自己的podspec文件添加到本地Specs倉庫中

Specs倉庫clone到本地后,會放到一個名為Specs的文件夾中恋捆。podspec文件在Specs倉庫中的保存原則是:

Pods依賴庫同名文件夾--->版本號同名文件夾--->podspec文件

照此原則照皆,我需要在Specs文件夾下建立一個名為QPCycleScrollView的文件夾,然后進(jìn)入到QPCycleScrollView文件夾下沸停,建立一個名稱為1.0.0的文件夾膜毁,最后進(jìn)入到1.0.0這個文件夾下,并且將之前創(chuàng)建好的QPCycleScrollView.podspec文件拷貝進(jìn)來愤钾。
不難理解瘟滨,如果以后有對QPCycleScrollView類的升級,就在QPCycleScrollView文件夾下建立對應(yīng)版本名稱的文件夾能颁,用于保存對應(yīng)版本的podspec文件即可杂瘸。
這些操作完成后,目錄層次結(jié)構(gòu)如下所示:

上傳本地Specs倉庫中的修改到github倉庫

執(zhí)行以下命令

cd /Users/chenqianping/Desktop/src/Specs
git add -A && git commit -m "Add QPCycleScrollView podspec file"
git push origin master

成功以后就能在github上自己fork的Specs倉庫中看到剛上傳的文件了劲装。

將在自己fork的Specs上做的修改pull給CocoaPods官方的Specs倉庫

進(jìn)入到自己fork的Specs倉庫中胧沫,會看到屏幕左上角有一個綠色按鈕:
該按鈕點進(jìn)去以后會有如下圖所示的界面:
點擊圖中的綠色Create Pull Request按鈕,即可將我們fork的Specs上做的修改pull給CocoaPods官方的Specs倉庫占业。

到這一步后绒怨,剩下的工作就只有等了,等待CocoaPods的維護(hù)人員審核并將我們pull上去的修改合并到官方的Specs倉庫中谦疾,這個過程通常會有一天左右的等待時間南蹂。如果有任何消息,比如審核不通過念恍,或者審核通過了六剥,CocoaPods官方都會發(fā)郵件通知的。
等到審核通過的時候峰伙,我們就能在官方的Specs倉庫中看到自己上傳的文件夾了疗疟。

查看審核進(jìn)度

當(dāng)然我們也能查看審核進(jìn)度,打開這個鏈接:
https://github.com/CocoaPods/Specs/pulls瞳氓,
這里能看到所有的Specs倉庫pull請求

查看我們自己創(chuàng)建的Pods依賴庫

如果收到了CocoaPods官方發(fā)過來的審核通過郵件以后策彤,你可能很著急的想在自己的電腦上執(zhí)行pod search命令,看看能不能搜索到自己創(chuàng)建的Pods依賴庫匣摘。不過你肯定會失望的店诗,因為還需要執(zhí)行一條命令才能在我們的本地電腦上使用search命令搜索到我們的依賴庫:

pod setup

它會將所有的Pods依賴庫tree跟新到本地。執(zhí)行完這條命令音榜,再去執(zhí)行:

pod search QPCycleScrollView

就能顯示出對應(yīng)的介紹信息了庞瘸!

注冊Trunk

pod trunk register pingkeke@163.com ‘pingkeke’  --verbose
pod trunk me

  - Name:     ‘pingkeke’ 
  - Email:    pingkeke@163.com
  - Since:    November 25th, 09:46
  - Pods:     None
  - Sessions:
    - November 25th, 09:46 - April 2nd, 2017 09:49. IP: 106.59.206.241

pod trunk push

rm ~/Library/Caches/CocoaPods/search_index.json
pod search QPCycleScrollView

?? Congrats

?? QPCycleScrollView (1.0.0) successfully published
?? November 25th, 10:01
?? https://cocoapods.org/pods/QPCycleScrollView
?? Tell your friends!

至此我們整個制作自己的開源庫的過程就完成了,以后有新版本只需要修改工程根目錄下的podspec文件就行了赠叼,然后重新執(zhí)行pod trunk push命令擦囊。

git commit -a -m "commit info"
git tag '1.0.1'
git push --tags
pod spec lint QPCycleScrollView.podspec
pod trunk push
echo 3.0 > .swift-version
pod spec lint QPPhotoAlbum.podspec
git tag 'v1.0.0'
git push --tags
git add QPPhotoAlbum.podspec
git commit -am "add QPPhotoAlbum.podspec file”
git push -u origin master
pod trunk me
pod trunk push
rm ~/Library/Caches/CocoaPods/search_index.json
pod search QPPhotoAlbum

說了那么多违霞,到這里整個Pods依賴庫創(chuàng)建過程才算真正結(jié)束!小伙伴們瞬场,你成功了嗎葛家??泌类?遇到問題還請留言。

擴(kuò)展閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末底燎,一起剝皮案震驚了整個濱河市刃榨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌双仍,老刑警劉巖枢希,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異朱沃,居然都是意外死亡苞轿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門逗物,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搬卒,“玉大人,你說我怎么就攤上這事翎卓∑跹” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵失暴,是天一觀的道長坯门。 經(jīng)常有香客問我,道長逗扒,這世上最難降的妖魔是什么古戴? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮矩肩,結(jié)果婚禮上现恼,老公的妹妹穿的比我還像新娘。我一直安慰自己蛮拔,他們只是感情好述暂,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著建炫,像睡著了一般畦韭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肛跌,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天艺配,我揣著相機(jī)與錄音察郁,去河邊找鬼。 笑死转唉,一個胖子當(dāng)著我的面吹牛皮钠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赠法,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼麦轰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了砖织?” 一聲冷哼從身側(cè)響起款侵,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侧纯,沒想到半個月后新锈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡眶熬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年妹笆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娜氏。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡拳缠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出牍白,到底是詐尸還是另有隱情脊凰,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布茂腥,位于F島的核電站狸涌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏最岗。R本人自食惡果不足惜帕胆,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望般渡。 院中可真熱鬧懒豹,春花似錦、人聲如沸驯用。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝴乔。三九已至记餐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間薇正,已是汗流浹背片酝。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工囚衔, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人雕沿。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓练湿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親审轮。 傳聞我的和親對象是個殘疾皇子肥哎,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容