CocoaPods創(chuàng)建公有和私有Pod庫方法總結(jié)

Github地址?zhangxiaomeng1 (ZXM) · GitHub

正文目錄

一. 創(chuàng)建公有Pod庫

1、注冊CocoaPods賬戶信息

2铺厨、創(chuàng)建共享庫文件并上傳到公有倉庫

3办斑、編輯.podspec文件

4枉阵、打tag, 發(fā)布一個(gè)release版本

5岂昭、發(fā)布自己的庫描述文件podspec給cocoapods

6守问、關(guān)于查找和使用新創(chuàng)建的庫

7、更新維護(hù)podspec


二. 創(chuàng)建私有Pod庫碧查,整體思路:

1.創(chuàng)建一個(gè)私有spec repo 管理所有私有spec文件运敢;

2.創(chuàng)建Pod所需要的項(xiàng)目工程文件,并且有可訪問的項(xiàng)目版本控制地址忠售;

3.創(chuàng)建Pod所對應(yīng)的podspec文件者冤;

4.驗(yàn)證podspec文件是否可用;

5.向私有的spec repo里添加podspec文件档痪;

6.新建個(gè)項(xiàng)目測試自己的私有庫;

7.更新podspec邢滑,建不同的版本腐螟;


一. 創(chuàng)建公有Pod庫

1. 創(chuàng)建一個(gè)工程 ,打開終端愿汰,切換到你要創(chuàng)建的位置的目錄,

cd /Users/zhangxiaomeng/Desktop/Repertory/OC/MyPods/XMLineChartView

pod lib create XMLineChartView

當(dāng)被問及創(chuàng)建Swift還是OC項(xiàng)目乐纸,按自己要求回答衬廷,我選擇ObjC;

當(dāng)被問及是否創(chuàng)建一個(gè)demo應(yīng)用包含在工程里汽绢,根據(jù)需要吗跋,如果需要寫一個(gè)demo示例,就選擇Yes宁昭,否則選擇NO跌宛,我這里選擇Yes;

當(dāng)被問及是否需要使用測試Framwork积仗,選擇NO疆拘;

當(dāng)被問及是否需要做接界面調(diào)試,我這里選擇NO寂曹;

還有一個(gè)就是工程文件的前綴哎迄,我這里是自己的名字的縮寫,這個(gè)隨意寫隆圆;

2.填寫podspec信息漱挚,這個(gè)文件主要是用來描述pod的版本號,首頁(homepage),作者信心等渺氧,具體的可以參看官方offical reference page

README如果你使用過GitHub旨涝,你肯定知道README文件的重要性,這個(gè)文件可以使用Markdown語法阶女,主要展示在GitHub工程上的首頁颊糜。README文件對于使用這個(gè)pod庫的人來說,有和沒有這個(gè)文件秃踩,區(qū)別是很明顯的衬鱼,此外這還有助于創(chuàng)建一個(gè)高質(zhì)量的CocoaPods Quality Index

LICENSE要想是Spec倉庫接收憔杨,就必須包含一個(gè)license鸟赫。命令pod lib create自動創(chuàng)建使用的是MITlicense;

其實(shí)通過pod lib lint這個(gè)命令,Cocoapods已經(jīng)幫我們創(chuàng)建了一個(gè)模板我們只需要在里面根據(jù)需要你進(jìn)行配置即可.沒有用到的注釋(#開頭的)可以刪除掉,看起來舒服一些.


接下來,我們做一個(gè)遠(yuǎn)程驗(yàn)證

pod lib lint?XMLineChartView.podspec --allow-warnings

只要見到passed validation就是成功通過了驗(yàn)證.

通過以上步驟,我們只是創(chuàng)建了一個(gè)合格的空的工程,并沒有實(shí)現(xiàn)任何功能,接下來我們就需要把自己要實(shí)現(xiàn)的功能代碼方進(jìn)去.

找到工程中ReplaceMe文件,替換就可以.

如果你在創(chuàng)建工程時(shí)候創(chuàng)建了一個(gè)包含demo的工程,那么你可以先切換到工程的Example文件目錄下面使用命令:

pod install

成功以后你就可以在demo文件中使用你的功能文件了.如果不能導(dǎo)入,那么可以commond + B編譯一下再導(dǎo)入使用

3.我們還沒有在GitHub上面創(chuàng)建相關(guān)的倉庫,因此可以先進(jìn)入GitHub賬戶創(chuàng)建倉庫

4. 提交自己的pod

Step 1: 接下來就需要把自己的工程推送到Github:

?git add .

?git commit -m “Initial Commit"

?git remote add origin https://github.com//YourPodName.git // replacewith your github.com username

? git push -u origin master

//添加版本號

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

$ git push --tags

Step 2 :驗(yàn)證

終端切換到LPodTest.podspec文件所在的目錄下面,運(yùn)行命令

pod lib lint --allow-warnings

如果出錯:

[!] QXMFatherHomeTbaListMoreVC_Category did not pass validation, due to 2 errors.

You can use the `--no-clean` option to inspect any issue.

解決:

pod lib lint --allow-warnings --use-libraries


5. 提交pod 到Specs倉庫

在這里有個(gè)pod trunk工具需要實(shí)現(xiàn)(只需要配置一次即可)消别。trunk工具是為了認(rèn)證用戶信息(包括設(shè)備)而存在的抛蚤,只有注冊認(rèn)證通過了,才能夠發(fā)布公開庫寻狂。

注冊trunk:

$ pod trunk register 郵箱?'名稱' --description='描述'

替換自己的郵箱名稱和描述

注冊成功后提示:

[!] Please verify the session by clicking the link in the verification email that has been sent to13162255392@163.com

需要我們接受認(rèn)證郵件并點(diǎn)擊附帶鏈接確認(rèn)岁经。當(dāng)我們完成注冊后,以后不需要此步驟蛇券。最后使用trunk工具缀壤,發(fā)布公開庫樊拓。

$ pod trunk push XMLineChartView.podspec --allow-warnings


Updating spec repo `master`

--------------------------------------------------------------------------------

???? Congrats

???? XMLineChartView (1.1.3) successfully published

???? March 25th, 18:55

???? https://cocoapods.org/pods/XMLineChartView

???? Tell your friends!

如果出錯:

[!] The spec did not pass validation, due to 2 errors.

解決

pod trunk push --allow-warnings --use-libraries


6. pod search 檢驗(yàn)是否可用大多情況下會出現(xiàn)這個(gè)問題:

[!] Unable to find a podwithname, author, summary,ordescriptionmatching `LPodTest

這主要是因?yàn)樵诒镜厮饕锩鏇]有, 解決辦法

pod setup (不行,實(shí)用方法二)

pod repo update(不行,試用方法三)

前往這個(gè)路徑下~/Library/Caches/CocoaPods刪除search_index.json文件 , 或者使用終端命令刪除:

rm ~/Library/Caches/CocoaPods/search_index.json

然后重新搜索.




打包類庫

需要使用一個(gè)cocoapods的插件cocoapods-packager來完成類庫的打包。當(dāng)然也可以手動編譯打包塘慕,但是過程會相當(dāng)繁瑣筋夏。

安裝打包插件

終端執(zhí)行以下命令

sudo gem install cocoapods-packager

打包

命令很簡單,執(zhí)行

pod package BZLib.podspec --library --force

其中--library指定打包成.a文件图呢,如果不帶上將會打包成.framework文件条篷。--force是指強(qiáng)制覆蓋。最終的目錄結(jié)構(gòu)如下

修改spec文件

#s.source_files = 'ABTestFrameWork/Classes/**/*'

??s.vendored_frameworks ='ABTestFrameWork-1.0.5/ios/ABTestFrameWork.framework'

(.a是s.vendored_libraries蛤织,.framework是s.vendored_frameworks赴叹。)

最后執(zhí)行?pod trunk push --allow-warnings --use-libraries




二.創(chuàng)建私有庫

1、如果想利用pod安裝私有庫瞳筏,那么就得創(chuàng)建和cocoapods官方一樣的結(jié)構(gòu)稚瘾,我們想來看看cocoapods官方的結(jié)構(gòu),cocoapods所有公共庫文件都存放在CocoaPods spec遠(yuǎn)端文件地址姚炕,如果在電腦上安裝了cocoapods它會從這個(gè)地址clone一份到本地摊欠,每次pod update 都會更新這個(gè)本地倉庫,首先先創(chuàng)建一個(gè)私有的庫 柱宦,由于github的私有倉庫是收費(fèi)的些椒,這里用coding碼市創(chuàng)建私有倉庫,如果和其他人協(xié)同開發(fā),只要把該倉庫的權(quán)限添加給他就行掸刊。

在coding碼市在創(chuàng)建2個(gè)倉庫,一個(gè)倉庫存放spec文件, 一個(gè)存源代碼免糕,

創(chuàng)建完遠(yuǎn)端的spec XMSpec,在終端執(zhí)行

pod repo add XMSpec https://git.coding.net/n34/XMSpec.gi

然后執(zhí)行

open ~/.cocoapods/repos?

會開看到在repos中創(chuàng)建了一個(gè)私有的倉庫,master是cocoapods官方的


2.創(chuàng)建工程和編輯spec文件

cd /Users/zhangxiaomeng/Desktop/Repertory/OC/MyPods/XSPrivate/XSCategorys

pod lib create XSCategorys

3忧侧、上傳到coding和打tag


4石窑、驗(yàn)證.podspec文件

pod lib lint XSCategorys.podspec --allow-warnings


報(bào)錯有可能?


5、向私有的庫里添加podspec文件

pod repo push XMSpec?XSCategorys.podspec


6.驗(yàn)證一下結(jié)果蚓炬;

pod search XSCategory


[!] Unable to find a pod with name, author, summary, or description matching `XSManager`

解決辦法:

rm ~/Library/Caches/CocoaPods/search_index.json


7松逊、新建一個(gè)項(xiàng)目進(jìn)行驗(yàn)證

xcode新建項(xiàng)目 在podfile中添加

pod 'XSCategorys', '~> 0.0.2'

如果提示'unable to find a specification for'

需要在podfile文件中添加源地址

source 'https://github.com/CocoaPods/Specs.git'

source 'https://git.coding.net/n34/XMSpec.git'

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市肯夏,隨后出現(xiàn)的幾起案子经宏,更是在濱河造成了極大的恐慌,老刑警劉巖驯击,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烁兰,死亡現(xiàn)場離奇詭異,居然都是意外死亡徊都,警方通過查閱死者的電腦和手機(jī)沪斟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暇矫,“玉大人币喧,你說我怎么就攤上這事轨域。” “怎么了杀餐?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長朱巨。 經(jīng)常有香客問我史翘,道長,這世上最難降的妖魔是什么冀续? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任琼讽,我火速辦了婚禮,結(jié)果婚禮上洪唐,老公的妹妹穿的比我還像新娘钻蹬。我一直安慰自己,他們只是感情好凭需,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布问欠。 她就那樣靜靜地躺著,像睡著了一般粒蜈。 火紅的嫁衣襯著肌膚如雪顺献。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天枯怖,我揣著相機(jī)與錄音注整,去河邊找鬼。 笑死度硝,一個(gè)胖子當(dāng)著我的面吹牛肿轨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蕊程,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼椒袍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了存捺?” 一聲冷哼從身側(cè)響起槐沼,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捌治,沒想到半個(gè)月后岗钩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肖油,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年兼吓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片森枪。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡视搏,死狀恐怖审孽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情浑娜,我是刑警寧澤佑力,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站筋遭,受9級特大地震影響打颤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜漓滔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一编饺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧响驴,春花似錦透且、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至畅形,卻和暖如春养距,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背日熬。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工棍厌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人竖席。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓耘纱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親毕荐。 傳聞我的和親對象是個(gè)殘疾皇子束析,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

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