學(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é)束!小伙伴們瞬场,你成功了嗎葛家??泌类?遇到問題還請留言。