CocoaPods公有庫

? ? ? ?最近在學習CocoaPods公有庫、本地私有庫、遠程私有庫,其中遇到了許多問題,怕過后又忘記了,所以記錄下來幫助自己也幫助他人少走彎路。做iOS 3年多未寫過什么文章,感覺自己都對不起自己的技術(shù)了,新手第一次寫文章,大神不要噴我?,F(xiàn)在面試聽說要求很多,都要GitHub有開源項目,有博客分享過技術(shù)文章...,生活不易呀,為了生存。????

? ? ? ?這文章先說說CocoaPods公有庫,接下來的文章就講講本地私有庫遠程私有庫。啥叫CocoaPods公有庫?比如我們經(jīng)常用到第三方庫AFNetworking、SDWebImage、MBProgressHUD,本人理解的CocoaPods公有庫就是把自己做好的庫、項目功能模塊上傳到開源倉庫,上傳CocoaPods的開源索引庫repo,通過CocoaPods管理自己的庫或者模塊。這樣管理項目就方便了,直接用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)建遠程倉庫與本地代碼關(guān)聯(lián)

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

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

? ? ? cd到桌面,或者你想要的文件夾,clone項目到本地。

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

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

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

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

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

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

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

s.version是你庫的版本號;

s.version庫簡介;

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

s.homepage遠程倉庫的主頁,對應(yīng)你項目庫的主頁,不是項目地址,不帶.git后綴的;

s.license是證書,剛開始創(chuàng)建遠程項目時選擇的;

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

s.platform支持的平臺,這個必須要的,要不會包錯,包沒有找到頭文件或者沒有找到UIKit;

s.source資源的地址和tag,這里的地址是庫的地址,帶.git的,tag要對應(yīng)遠程的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ǔ)上更改了。這是我查了很久資源才知道的,當時一直報錯。。。

溫馨提示:

? ? ? ?.podspec文件的內(nèi)容配置要根據(jù)你的項目庫來填寫,里面還有許多我沒有用到的,比如資源庫、依賴第三方的庫、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)致編譯報錯,只需要重命名加上即可

寫法: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'

四、把本地代碼上傳到遠程倉庫和打tag版本

配置好.podspec文件,接著就是把代碼上傳到遠程倉庫,通過

????$ git add . ; ?

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

????$ git push。

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

? ? $ git tag '0.0.1' ;?

? ? $ git push --tags;

如圖所示:


五、注冊Cocoapods賬號

? ? ? ?可以先查看你本機有沒有注冊過Cocoapods賬號,通過 $ pod trunk me ,如果沒有信息就證明沒有注冊過,需要注冊。輸入$ pod trunk register 郵箱地址 ‘用戶名’ --description='描述信息' 注冊,然后在你注冊的郵箱收到郵件,打開郵件復(fù)制鏈接打開網(wǎng)頁激活驗證注冊,然后跳到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有顯示庫,是我之前弄的。



六、驗證pod是否能通過

上傳代碼后,然后驗證pod是否能通過:

? ??$ pod lib lint ? 本地驗證?

? ??$ pod spec lint ?本地和遠程驗證

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

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

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

七、提交pod和檢查庫

pod驗證通過了,就接著執(zhí)行$ pod trunk push xx.podspec --allow-warnings,等幾分鐘,結(jié)果報錯了。

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

這次成功了,如果所示:

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

然后通過搜索庫看能不能搜索出來,$ pod search XX ,結(jié)果搜不出來,因為是pod的緩存問題,是從緩存的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.上傳到遠程倉庫;

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

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

? ??? ??$ git push。

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

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

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

????4.驗證pod并提交到pod。

?? ??????$?spec repo ? ?//查詢repo

? ??? ???$?pod spec lint --allow-warnings ? ?//遠程本地pod驗證

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

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


第一次寫文章,用了好久的時間,不過有點成就感,嘻嘻?。?!

下次就是寫本地私有庫遠程私有庫了...

喜歡點個贊唄?。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,797評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,179評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,628評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,642評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,444評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,948評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,040評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,185評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,717評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,794評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,418評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,414評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,750評論 2 370

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