cocoapods 私有庫的建立

前言

做iOS開發(fā)3、4年了攒岛,看了很多別人的庫赖临,也有很多自己的組件,類灾锯,在新啟一個項目時兢榨,不免要拿以前的東西來用,以前一直是保存在自己電腦的挠进,需要用哪個直接copy色乾,很不友好,而且有些東西不太好找领突,根據(jù)項目有不同的變動的話就會有很多的版本出來等等等吧暖璧,總之很多原因【基于此呢澎办,就想做自己的私有庫,這個東西呢金砍,其實早就知道了局蚀,但是人比較懶,一直也沒有去搞恕稠,前段時間搞了一下琅绅,但是遇到一些問題,再加上比較忙就擱下了鹅巍,這次卷土重來也是遇到很多問題千扶,還好最后成功了料祠,把自己遇到的問題做個記錄吧。

先附上一張成功圖片

podspec發(fā)布成功


創(chuàng)建私有Spec Repo

先來說第一步澎羞,什么是Spec Repo髓绽?它是所有的Pods的一個索引,

就是一個容器妆绞,所有公開的Pods都在這個里面顺呕,它實際是一個Git倉庫remote端在GitHub上,但是當(dāng)你使用了Cocoapods后它會被clone到本地的~/.cocoapods/repos目錄下括饶,可以進(jìn)入到這個目錄看到master文件夾就是這個官方的Spec Repo了株茶。這個master目錄的結(jié)構(gòu)是這個樣子的

├── Specs

└── [SPEC_NAME]

└── [VERSION]

└── [SPEC_NAME].podspec

因此我們需要創(chuàng)建一個類似于master的私有Spec Repo。首先創(chuàng)建一個 Git倉庫图焰,這個倉庫你可以創(chuàng)建私有的也可以創(chuàng)建公開的忌卤,需要注意的就是如果項目中有其他同事共同開發(fā)的話,你還要給他這個Git倉庫的權(quán)限楞泼。

1.創(chuàng)建一個 Git倉庫

創(chuàng)建完成之后在Terminal中執(zhí)行如下命令

#pod repo add [Private Repo Name] [GitHub HTTPS clone URL]

$ pod repo add gd_repos https://github.com/dujinxin/JXView-Swift.git

此時如果成功的話進(jìn)入到~/.cocoapods/repos目錄下就可以看到gr_repos這個目錄了。至此第一步創(chuàng)建私有Spec Repo完成笤闯。

2.創(chuàng)建Pod項目工程文件

如果是有現(xiàn)成的模塊組件堕阔,并且在Git的版本管理下,可以跳過這一步颗味。如果從零開始超陆,使用Cocoapods進(jìn)行創(chuàng)建,可以參考https://guides.cocoapods.org/making/using-pod-lib-create.html

我第一次成功是參考別人用以下方式創(chuàng)建(JXView為例):

$ mkdir JXView

$ cd JXView

$ pod lib create JXView

之后終端會出現(xiàn)四個問題:1浦马,選用哪種語言时呀;2.是否需要一個例子工程;3.選擇一個測試框架晶默;4.是否基于View測試谨娜。

創(chuàng)建pod項目

選擇完這4個問題,自動執(zhí)行pod install命令創(chuàng)建項目并生成依賴磺陡。向Pod文件夾中添加庫文件和資源趴梢,并配置podspec文件,把模塊的共有組件放入Pod/Classes中币他,然后進(jìn)入Example文件夾執(zhí)行pod update命令坞靶,再打開項目工程可以看到,剛剛添加的組件已經(jīng)在Pods子工程下Development Pods/PodTestLibrary中了蝴悉,然后編輯demo工程彰阴,測試組件,我并沒有使用提供的測試框架進(jìn)行測試拍冠,這里就先不介紹了尿这。

$ cd /Users/dujinxin/github/JXView-Swift/Example/

$ pod update

注意:這里需要注意的是每當(dāng)你向Pod中添加了新的文件或者以后更新了podspec的版本都需要重新執(zhí)行一遍pod update命令簇抵。

測試無誤后需要將該項目添加并推送到遠(yuǎn)端倉庫,并編輯podspec文件妻味。通過Cocoapods創(chuàng)建出來的目錄本身就在本地的Git管理下正压,如果我們托管到遠(yuǎn)端服務(wù)器,那么我們需要做的就是給它添加遠(yuǎn)端倉庫责球,同樣去GitHub或其他的Git服務(wù)提供商那里創(chuàng)建一個私有的倉庫焦履,拿到HTTP地址,然后cd到JXView目錄雏逾,執(zhí)行一下步驟:

$ git add .

$ git commit -s -m "Initial Commit of Library"

$ git remote add origin https://github.com/dujinxin/JXView-Swift.git? #添加遠(yuǎn)端倉庫

$ git push origin master? ? #提交到遠(yuǎn)端倉庫 ?

注:如果推送遠(yuǎn)端倉庫失敗嘉裤,可以根據(jù)提示來操作,對命令行不熟的栖博,可以通過git客戶端來操作

因為podspec文件中獲取Git版本控制的項目還需要tag號屑宠,所以我們要打上一個tag

$ git tag -m "first release" "0.0.1"

$ git tag -m "release JXView with podspec" "v0.0.5"

$ git push --tags? ? #推送tag到遠(yuǎn)端倉庫

3.編輯podspec文件

podspec文件

編輯完podspec文件后,需要驗證一下這個文件是否可用

$ pod lib lint

注意:如果有任何WARNING或者ERROR都是不可以的仇让,它就不能被添加到Spec Repo中典奉,Xcode允許警告存在,所以可以通過命令“$ pod lib lint --allow-warnings”屏蔽警告丧叽,如果出現(xiàn)Error但是提示信息不足卫玖,可以通過命令“$ pod lib lint --verbose”以獲取更多錯誤信息。

如果驗證不通過踊淳,根據(jù)提示修改podspec假瞬,直到再次驗證通過如下:

podspec驗證通過

podspec更多設(shè)置可以參考官方實例http://guides.cocoapods.org/syntax/podspec.html,想了解更多跟項目相關(guān)的設(shè)置迂尝,還可以上GitHub參考知名第三庫的podspec

4.向Spec Repo提交podspec

向Spec Repo提交podspec需要完成兩點一個是podspec必須通過驗證無誤脱茉,再一個就是刪掉無用的注釋(這個不是必須的,為了規(guī)范還是刪掉吧)垄开。

$ pod repo push gd_repos JXView.podspec? #前面是本地Repo名字 后面是podspec名字

之前沒有發(fā)布過pods的琴许,這一步不成功,需要先注冊Trunk

CocoaPods 0.33中加入了Trunk服務(wù)说榆。CocoaPods Trunk服務(wù)的引入虚吟,解決了很多類似的問題。CocoaPods作為一個集中式的服務(wù)签财,使得分析和統(tǒng)計平臺數(shù)據(jù)變得十分方便串慰。要想使用Trunk服務(wù),首先你需要注冊自己的電腦唱蒸。這很簡單邦鲫,只要你指明你的郵箱地址(spec文件中的)和名稱即可。

$ pod trunk register 123456@qq.com 'zhangsan' --description='macbook air'

后面可以加上 –verbose可選參數(shù),為了便于輸出注冊過程中的調(diào)試信息庆捺,然后順利的話你會收到一份郵件古今,需要點擊驗證。驗證成功后滔以,我們就可以開始 trunk push 了提交我們的podspec文件捉腥。

$ pod trunk push JXView.podspec

pod trunk push 命令會首先驗證你本地的podspec文件(是否有錯誤),之后會上傳spec文件到trunk你画,最后會將你上傳的podspec文件轉(zhuǎn)換為需要的json文件抵碟,再去看我們的Spec Repo遠(yuǎn)端倉庫,也有了一次提交坏匪,這個podspec也已經(jīng)被Push上去了拟逮。至此,我們的這個組件庫就已經(jīng)制作添加完成了适滓。

注意:可以使用以下命令查看自己的注冊信息“$ pod trunk me”敦迄。當(dāng)然,如果你的pod是由多人維護(hù)的凭迹,你也可以添加其他維護(hù)者“$ pod trunk add-owner ARAnalytics kyle@cocoapods.org”

5.查看和使用我們自己的庫

使用pod search命令就可以查到我們自己的庫了.

$ pod search JXView

搜索結(jié)果

在完成這一系列步驟之后罚屋,我們就可以在正式項目中使用這個私有的Pod了只需要在項目的Podfile里增加以下一行代碼即可

$ pod 'JXView', '~> 0.0.5'

然后執(zhí)行pod update,更新庫依賴嗅绸,我們自己的庫文件已經(jīng)出現(xiàn)在Pods子項目中的Pods子目錄下了沿后,而不再是Development Pods。

至此我們的pods私有庫就制作完成了朽砰,在制作過程中遇到的問題可以參考http://www.reibang.com/writer#/notebooks/8215347/notes/16219131

參考:https://guides.cocoapods.org/making/using-pod-lib-create.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市喉刘,隨后出現(xiàn)的幾起案子瞧柔,更是在濱河造成了極大的恐慌,老刑警劉巖睦裳,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件造锅,死亡現(xiàn)場離奇詭異,居然都是意外死亡廉邑,警方通過查閱死者的電腦和手機哥蔚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛛蒙,“玉大人糙箍,你說我怎么就攤上這事∏K睿” “怎么了深夯?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我咕晋,道長雹拄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任掌呜,我火速辦了婚禮滓玖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘质蕉。我一直安慰自己势篡,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布饰剥。 她就那樣靜靜地躺著殊霞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪汰蓉。 梳的紋絲不亂的頭發(fā)上绷蹲,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音顾孽,去河邊找鬼祝钢。 笑死,一個胖子當(dāng)著我的面吹牛若厚,可吹牛的內(nèi)容都是我干的拦英。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼测秸,長吁一口氣:“原來是場噩夢啊……” “哼疤估!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起霎冯,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤铃拇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后沈撞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慷荔,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年缠俺,在試婚紗的時候發(fā)現(xiàn)自己被綠了显晶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡壹士,死狀恐怖磷雇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情躏救,我是刑警寧澤倦春,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響睁本,放射性物質(zhì)發(fā)生泄漏尿庐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一呢堰、第九天 我趴在偏房一處隱蔽的房頂上張望抄瑟。 院中可真熱鬧,春花似錦枉疼、人聲如沸皮假。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惹资。三九已至,卻和暖如春航闺,著一層夾襖步出監(jiān)牢的瞬間褪测,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工潦刃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侮措,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓乖杠,卻偏偏與公主長得像分扎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子胧洒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

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