CocoaPods公有庫

? ? ? ?最近在學(xué)習(xí)CocoaPods公有庫屋确、本地私有庫纳击、遠(yuǎn)程私有庫,其中遇到了許多問題攻臀,怕過后又忘記了焕数,所以記錄下來幫助自己也幫助他人少走彎路。做iOS 3年多未寫過什么文章刨啸,感覺自己都對不起自己的技術(shù)了堡赔,新手第一次寫文章,大神不要噴我∩枇現(xiàn)在面試聽說要求很多善已,都要GitHub有開源項(xiàng)目,有博客分享過技術(shù)文章...离例,生活不易呀换团,為了生存。????

? ? ? ?這文章先說說CocoaPods公有庫粘招,接下來的文章就講講本地私有庫遠(yuǎn)程私有庫偎球。啥叫CocoaPods公有庫洒扎?比如我們經(jīng)常用到第三方庫AFNetworking、SDWebImage衰絮、MBProgressHUD袍冷,本人理解的CocoaPods公有庫就是把自己做好的庫、項(xiàng)目功能模塊上傳到開源倉庫猫牡,上傳CocoaPods的開源索引庫repo胡诗,通過CocoaPods管理自己的庫或者模塊。這樣管理項(xiàng)目就方便了,直接用CocoaPods安裝即可煌恢。

一骇陈、安裝cocoapod或更新cocoapods

需要安裝新版的cocoapods,舊版的cocoapods可能不支持瑰抵,會導(dǎo)致下面的步驟出錯你雌,所以先要更新cocoapods。我是用最新的1.5.0 beta版二汛,如圖:


我這里就不說安裝cocoapods或者更新cocoapods了婿崭,請大家網(wǎng)上搜一下教程。

更新cocoapods的簡單步驟:

$ sudo gem update --system// 先更新gem肴颊;

$ sudo gem install cocoapods// 安裝cocoapods

$ pod setup//設(shè)置

如果gem升級失敗氓栈,可能是ruby版本過低導(dǎo)致的,安裝RVM來升級ruby婿着。

二授瘦、創(chuàng)建遠(yuǎn)程倉庫與本地代碼關(guān)聯(lián)

先在GitHub上創(chuàng)建新項(xiàng)目,這里我就直接用例子了祟身,如圖所示:

? ? ? ?這里用的是選擇公有庫奥务,私有的要錢的,最好添加ignore和證書license袜硫,證書在后面用到氯葬,可以去掉警告。創(chuàng)建成功項(xiàng)目里就只有ignore和license婉陷,選擇地址clone項(xiàng)目到桌面帚称。

? ? ? cd到桌面,或者你想要的文件夾秽澳,clone項(xiàng)目到本地闯睹。

? ? ? ?打開剛才clone的文件夾,我這里就直接用庫担神,不帶demo的楼吃,如果你們想要帶demo的話也是一樣的道理,只是路徑填好就行了妄讯。一般在庫里面創(chuàng)建Classes文件夾孩锡,名稱隨意,.podspec的資源路徑填好就沒問題亥贸,然后把你的庫或者模塊放在Classes文件夾里面躬窜,我就用我自己做的一個庫,如圖:

? ? ? 我這邊就把遠(yuǎn)程庫和本地代碼關(guān)聯(lián)了炕置,只是沒有把代碼上傳帶遠(yuǎn)程倉庫荣挨,你們也可以直接在本地創(chuàng)建庫名男韧,然后通過命令?git remote add origin 遠(yuǎn)程倉庫地址?關(guān)聯(lián)遠(yuǎn)程倉庫 ,這我就不示范了默垄。

三此虑、創(chuàng)建.podspec文件和修改.podspec文件的內(nèi)容

? ? ? ?接著cd到庫,命令執(zhí)行厕倍,$ pod spec create PublicLib?// PublicLib是你的庫名稱寡壮,這里創(chuàng)建.podspec文件,這個文件就是最重要的讹弯。你再去看看你的庫是不是多了一個.podspec文件况既,如圖:

? ? ? 打開.podspec文件,通過xcode打開组民,修改相應(yīng)的內(nèi)容棒仍,想詳細(xì)了解更多的.podspec文件內(nèi)容,請看官網(wǎng)介紹:Specs and the Specs Repo臭胜。把不需要的刪除莫其,修改完后如圖:

? ? ? ? .podspec文件內(nèi)容那么多,為啥就只剩這一點(diǎn)點(diǎn)了耸三,#開頭的是注釋的乱陡,用不到的,看著有點(diǎn)亂仪壮,所以就刪了憨颠。

s.name一般不需要修改,它對應(yīng).podspec文件的名字积锅,如果不相同就會報(bào)錯爽彤;

s.version是你庫的版本號;

s.version庫簡介缚陷;

s.description庫描述适篙,這個庫描述一定要比簡介長;

s.homepage遠(yuǎn)程倉庫的主頁箫爷,對應(yīng)你項(xiàng)目庫的主頁嚷节,不是項(xiàng)目地址,不帶.git后綴的虎锚;

s.license是證書硫痰,剛開始創(chuàng)建遠(yuǎn)程項(xiàng)目時(shí)選擇的;

s.author作者聯(lián)系名和郵箱翁都;

s.platform支持的平臺碍论,這個必須要的谅猾,要不會包錯柄慰,包沒有找到頭文件或者沒有找到UIKit鳍悠;

s.source資源的地址和tag,這里的地址是庫的地址坐搔,帶.git的藏研,tag要對應(yīng)遠(yuǎn)程的tag;

s.source_files資源文件概行,通過這路徑找到對應(yīng)的文件蠢挡;

s.public_header_files暴露的.h文件,用到靜態(tài)庫凳忙;

s.requires_arc是否支持ARC业踏;

s.ios.vendored_libraries靜態(tài)庫路徑,我這里用到了靜態(tài)庫涧卵。

? ? ? ? ?這里如果沒有填寫正確勤家,會遇到很多坑,文件路徑一定要填寫好柳恐,如果我這里不是直接Classes文件夾伐脖,而是Classes文件夾在Lib文件里面,Lib文件是跟.podspec文件同目錄的乐设,那么路徑就要Lib/Classes/**/讼庇;還有這里你有沒有發(fā)現(xiàn)我的靜態(tài)庫.a文件跟.h文件名字不一樣,那是我后來改的近尚,如果用到了系統(tǒng)外的就要以lib開頭的.a蠕啄,所以我就在原來的基礎(chǔ)上更改了。這是我查了很久資源才知道的肿男,當(dāng)時(shí)一直報(bào)錯介汹。。舶沛。

溫馨提示:

? ? ? ?.podspec文件的內(nèi)容配置要根據(jù)你的項(xiàng)目庫來填寫嘹承,里面還有許多我沒有用到的,比如資源庫如庭、依賴第三方的庫叹卷、frame框架、系統(tǒng)的庫等等坪它。這些都需要你們到官網(wǎng)看看介紹骤竹,或者看其他人的介紹,這我就不一一介紹了往毡。

這些在別人文章找到的:

vendored_frameworks:配置需要引用的非系統(tǒng)框架

寫法:vendored_frameworks ='Frameworks/LibFramework.framework'

frameworks:配置依賴的系統(tǒng)框架

寫法:frameworks ='AVFoundation','CoreGraphics','Security','SystemConfiguration'

vendored_libraries:配置需要引用的非系統(tǒng)靜態(tài)庫(要注意蒙揣,這里的.a靜態(tài)庫名字必須要帶lib前綴,如果引用的靜態(tài)庫名字沒lib前綴會導(dǎo)致編譯報(bào)錯开瞭,只需要重命名加上即可

寫法:vendored_libraries ='Classes/libQYHKeyBoardManager.a'

libraries:配置依賴的系統(tǒng)庫(要注意懒震,這里的寫法需要忽略lib前綴

寫法:libraries ='c++','sqlite3','stdc++.6.0.9','z'

resources:配置資源文件(.bundle罩息,.png,.txt等資源文件个扰,這些資源文件會被放到mainBundle中瓷炮,要注意避免發(fā)生命名重復(fù)的問題

寫法:resources ='Resources/QYHKeyBoard.bundle'

resource_bundles:配置指定bundle的資源文件(可以解決resources導(dǎo)致的命名沖突問題

寫法:resource_bundles = {'QYHKeyBoardBundle'=> ['Resources/QYHKeyBoard.bundle'],}

dependency:依賴的三方庫

寫法:dependency 'AFNetworking','~>3.1.0'

四、把本地代碼上傳到遠(yuǎn)程倉庫和打tag版本

配置好.podspec文件递宅,接著就是把代碼上傳到遠(yuǎn)程倉庫娘香,通過

????$ git add . ; ?

????$ git commit -m “XX” ?;?

????$ git push。

打tag,打的tag一定要對應(yīng)版本號办龄,因?yàn)?podspec文件配置已經(jīng)寫好跟版本號一樣的,通過

? ? $ git tag '0.0.1' ;?

? ? $ git push --tags;

如圖所示:


五烘绽、注冊Cocoapods賬號

? ? ? ?可以先查看你本機(jī)有沒有注冊過Cocoapods賬號,通過 $ pod trunk me 俐填,如果沒有信息就證明沒有注冊過诀姚,需要注冊。輸入$ pod trunk register 郵箱地址 ‘用戶名’ --description='描述信息' 注冊玷禽,然后在你注冊的郵箱收到郵件赫段,打開郵件復(fù)制鏈接打開網(wǎng)頁激活驗(yàn)證注冊,然后跳到pod官網(wǎng)提示pod trunk push矢赁。

????$ pod trunk me //查看有沒有注冊糯笙,有的話就是相關(guān)的注冊賬號的信息

????$ pod trunk register ?郵箱地址 ?‘用戶名’ --description='描述信息' ?//注冊Cocoapods賬號

????$ pod trunk push xx.podspec --allow-warnings //提交到pod,最后用到

如圖是本人自己操作的撩银,pod trunk me有顯示庫给涕,是我之前弄的。



六额获、驗(yàn)證pod是否能通過

上傳代碼后够庙,然后驗(yàn)證pod是否能通過:

? ??$ pod lib lint ? 本地驗(yàn)證?

? ??$ pod spec lint ?本地和遠(yuǎn)程驗(yàn)證

? ??$ pod lib lint --verbose 顯示詳細(xì)的檢測過程,出錯時(shí)會顯示詳細(xì)的錯誤信息

? ??$ pod lib lint --allow-warnings ?允許警告抄邀,用來解決存在警告導(dǎo)致不能通過校驗(yàn)的問題

如果出現(xiàn)綠色字passed validation就是驗(yàn)證通過耘眨,如圖所示:

七、提交pod和檢查庫

pod驗(yàn)證通過了境肾,就接著執(zhí)行$ pod trunk push xx.podspec --allow-warnings剔难,等幾分鐘,結(jié)果報(bào)錯了奥喻。

? ? ? ? pod上面已經(jīng)有相應(yīng)的名稱了偶宫,所以要更改名稱了。我目錄的文件夾和.podspec文件名和.podspec文件里面的s.name都全部更改了环鲤,要不會報(bào)錯纯趋,如圖:

這次成功了,如果所示:

再執(zhí)行$ pod trunk me 可以看到自己的信息,包括自己的庫吵冒,如上圖所示唇兑。

然后通過搜索庫看能不能搜索出來,$ pod search XX ,結(jié)果搜不出來桦锄,因?yàn)槭莗od的緩存問題,是從緩存的repo搜索的蔫耽。把緩存刪除了结耀,通過$?rm ~/Library/Caches/CocoaPods/search_index.json 把緩存刪掉,再$ pod search XX搜重新從網(wǎng)上搜索緩存下來。如圖匙铡,如果能搜到就成功了图甜,直接就可以用pod 安裝管理了。

????$ pod search XX ? ?//搜索庫

????$?rm ~/Library/Caches/CocoaPods/search_index.json ?//刪除pod的緩存

八鳖眼、版本更新

版本更新跟之前的步驟差不多黑毅,這就簡單說一下步驟:

????1.修改.podspec文件中的版本號;

????????s.version? ? ? = "0.0.2" //修改0.0.2版本钦讳,不能是之前的版本矿瘦,要不提交不成功

????2.上傳到遠(yuǎn)程倉庫;

? ??????$ git add . ; ?

? ?? ???$ git commit -m “XX” ?;?

? ??? ??$ git push愿卒。

????3.打tag并上傳缚去;

? ??????$ git tag '0.0.2' ;? ??

? ?? ???$ git push --tags;

????4.驗(yàn)證pod并提交到pod。

?? ??????$?spec repo ? ?//查詢r(jià)epo

? ??? ???$?pod spec lint --allow-warnings ? ?//遠(yuǎn)程本地pod驗(yàn)證

? ??? ???$?pod trunk push ?PublicLibQiuyh.podspec?--allow-warnings ??//提交pod

? ??? ???$?pod search PublicLibQiuyh ? //查詢庫


第一次寫文章琼开,用了好久的時(shí)間易结,不過有點(diǎn)成就感,嘻嘻9窈颉8愣!

下次就是寫本地私有庫遠(yuǎn)程私有庫了...

喜歡點(diǎn)個贊唄Tⅰp兄住!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辅柴,一起剝皮案震驚了整個濱河市狮惜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碌识,老刑警劉巖碾篡,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異筏餐,居然都是意外死亡开泽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門魁瞪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來穆律,“玉大人惠呼,你說我怎么就攤上這事÷驮牛” “怎么了剔蹋?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長辅髓。 經(jīng)常有香客問我泣崩,道長,這世上最難降的妖魔是什么洛口? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任矫付,我火速辦了婚禮,結(jié)果婚禮上第焰,老公的妹妹穿的比我還像新娘买优。我一直安慰自己,他們只是感情好挺举,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布杀赢。 她就那樣靜靜地躺著,像睡著了一般湘纵。 火紅的嫁衣襯著肌膚如雪葵陵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天瞻佛,我揣著相機(jī)與錄音脱篙,去河邊找鬼。 笑死伤柄,一個胖子當(dāng)著我的面吹牛绊困,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播适刀,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼秤朗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了笔喉?” 一聲冷哼從身側(cè)響起取视,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎常挚,沒想到半個月后作谭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奄毡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年折欠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡锐秦,死狀恐怖咪奖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情酱床,我是刑警寧澤羊赵,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站扇谣,受9級特大地震影響昧捷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜揍堕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汤纸。 院中可真熱鬧衩茸,春花似錦、人聲如沸贮泞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啃擦。三九已至囊蓝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間令蛉,已是汗流浹背聚霜。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留珠叔,地道東北人蝎宇。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像祷安,于是被迫代替她去往敵國和親姥芥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

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