構(gòu)建一個CocoaPods模塊庫的方法

我們平時開發(fā)iOS APP的時候悦昵,都喜歡用cocoaPods引入各種開源庫邪锌,像AFNetworking芒炼、MJRefresh等著名的開源庫批狐,用Podfile一句話就可以引入項(xiàng)目吩谦,非常方便鸳谜。那么,如何將自己開發(fā)的模塊放到CocoaPods上供別人使用呢逮京?下面就來介紹一下方法:


第一步:在Github上創(chuàng)建自己的模塊庫項(xiàng)目

首先卿堂,你要有個github的賬號。進(jìn)入github(https://github.com/)懒棉,登錄后點(diǎn)擊右上角的“+”號草描,在彈出菜單中選“New repository”。

在彈出的頁面中策严,依次輸入“項(xiàng)目名”穗慕、“項(xiàng)目描述”,選中“Initialize this repository with a README”妻导,.gitignore根據(jù)自己的開發(fā)語言來選就可以逛绵,比如我寫這個項(xiàng)目用的是Objective-C,就從列表中選Objective-C倔韭。然后注意在“Add a license”那里選一種開源協(xié)議术浪,一般選“MIT”就可以了。一定要選一個寿酌,否則github在初始化項(xiàng)目時不會創(chuàng)建一個名為"LICENSE"的文件胰苏,后面加入pods的時候會報(bào)錯。

點(diǎn)擊Create repository創(chuàng)建項(xiàng)目后醇疼,github會自動在項(xiàng)目中創(chuàng)建3個文件:.gitignore硕并、README.md和LICENSE。點(diǎn)擊旁邊的“Code”按鈕秧荆,可以看到這個git庫的地址倔毙。使用git工具將它c(diǎn)lone到本地(我喜歡用SourceTree,功能強(qiáng)大還免費(fèi))乙濒。

使用XCode創(chuàng)建一個Framework類型的工程陕赃,并保存到剛才clone到本地的項(xiàng)目目錄中,Xcode會自動將工程的所有文件加入到git庫。假設(shè)這個項(xiàng)目名為PeopleTestPod凯正,我們在此項(xiàng)目中添加一個簡單的Hello類毙玻,隨便干一點(diǎn)事情。接下來廊散,我們再用Xcode為PeopleTestPod添加一個名為“PeopleTestPodDemo”的Target桑滩,用來保存演示程序。(還記得你用過的那些別人開發(fā)的pods庫嗎允睹?他們也是這么做的)

如果操作正確运准,現(xiàn)在Xcode中的代碼結(jié)構(gòu)應(yīng)該大致是這個樣子:


打開一個終端窗口,cd到項(xiàng)目的根目錄缭受,執(zhí)行語句:

pod?spec create 項(xiàng)目名 項(xiàng)目的github地址

例:

pod spec create PeopleTestPod?https://github.com/ken-hanks/PeopleTestPod.git

此命令會自動創(chuàng)建一個擴(kuò)展名為.podspec的配置文件胁澳。

現(xiàn)在讓我們看一下磁盤上的目錄結(jié)構(gòu),此時項(xiàng)目的目錄下應(yīng)該是這個樣子的米者。


用vim打開PeopleTestPod.podspec文件韭畸,會看到很多的配置屬性,我們只修改其中一部分就可以了蔓搞。下面是需要修改的項(xiàng)目:

#項(xiàng)目名

spec.name??????? = “PeopleTestPod"


#版本號胰丁,需要和github上的tag一致

spec.version????? = “0.0.5"


#項(xiàng)目說明,如果不寫會有warning

spec.summary????? = "This is a test project of pod."


#項(xiàng)目官網(wǎng)地址喂分,如果不寫會有Warning

spec.homepage ??? = "http://www.people.cn


#共享協(xié)議類型锦庸,建議寫MIT,不寫的話無法通過

spec.license????? = “MIT"


#項(xiàng)目支持的操作系統(tǒng)以及最低版本號

spec.platform ??? = :ios, “10.0”


#源碼的github地址蒲祈,tag那里直接用這個宏定義就好了甘萧,和前面那個version屬性一致

spec.source ????? = { :git => "https://github.com/ken-hanks/PeopleTestPod.git", :tag => "#{spec.version}” }


#source_files這個地方是最容易出錯的,第一個引號里是項(xiàng)目名梆掸,第二個引號里是要包含到pod里的文件

#注意不要把那個Demo的Target包含到pod里扬卷。

#/**/表示遞歸包含,也就是把某個目錄及其所有的子目錄都包含進(jìn)來酸钦。

#*.{h.m}表示包含所有擴(kuò)展名是.h或.m的文件邀泉。

spec.source_files? = "PeopleTestPod", "PeopleTestPod/PeopleTestPod/**/*.{h,m}”

編輯完.podspec文件后,用git add指令添加到git庫钝鸽。然后提交一版并推送到github。

例:

?? ?git add?PeopleTestPod.podspec

? ? git?commit -m "添加podspec文件"

? ? git push

給當(dāng)前版本打一個tag庞钢,可以使用SourceTree這種工具拔恰。注意tag的號要和.podspec文件里的spec.version相同。

在終端下執(zhí)行下面這個命令檢測一下有效性基括。

pod lib lint

如果成功會顯示:

PeopleTestPod.podspec passed validation.

如果不成功颜懊,則可以用pod lib lint --verbose 指令查看到底是哪里出了差錯。

至此,構(gòu)建一個CocoaPods模塊庫的第一個步驟就完成了河爹。此時我們已經(jīng)將模塊的代碼匠璧、Podspec文件上傳到了github服務(wù)器,并按Podspec文件里的設(shè)定打好了Tag咸这。此時我們打開github網(wǎng)站夷恍,應(yīng)該能看到類似這樣的界面:

第二步:將項(xiàng)目登記到CocoaPods.org


目前CocoaPods.org采用了一種名為“Trunk”的模式來實(shí)現(xiàn)這個操作,具體的操作步驟是:

進(jìn)入項(xiàng)目目錄媳维,輸入指令:

pod trunk register 郵箱 “用戶名”

例:?pod trunk register??han.kang@qq.com? "Ken_Hanks"

用戶名是隨便起的酿雪。注冊完后,到郵箱里收確認(rèn)郵件侄刽,點(diǎn)擊鏈接指黎。

用pod trunk me 查看一下。如果顯示下面這樣的信息州丹,就算成功了醋安。

輸入指令:pod trunk push? 將模塊信息注冊到CocoaPods

如果成功,反饋大概是這個樣子:

push成功后墓毒,會反饋一個網(wǎng)址吓揪,類似上圖中的https://cocoapods.org/pods/PeopleTestPod,我們就可以打開這個地址看到此模塊的屬性信息蚁鳖。不過此時這個模塊還無法在https://cocoapods.org/?的主頁上查到磺芭,需要等大約一天時間,才可以查到醉箕。

當(dāng)模塊可以在CocoaPods的主頁上查到后钾腺,我們就可以在本地終端上用 pod search 項(xiàng)目名 的指令搜索這個庫了。

例: pod search PeopleTestPod

如果顯示類似下面這樣的提示讥裤,就說明pod項(xiàng)目已經(jīng)可以在repo庫中查到放棒。

如果查不到,則需要用 pod repo update 指令更新一下本地的repo己英。

當(dāng)pod search返回正確結(jié)果后间螟,就可以讓你的用戶在Podfile中使用你開發(fā)的模塊庫了。以后模塊庫更新版本损肛,只要修改.podspec文件中的spec.version屬性厢破,將其改為新的tag號,然后再用 “pod trunk push” 指令更新cocoapods網(wǎng)站上的信息就可以了治拿。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末摩泪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子劫谅,更是在濱河造成了極大的恐慌见坑,老刑警劉巖嚷掠,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異荞驴,居然都是意外死亡不皆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門熊楼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霹娄,“玉大人,你說我怎么就攤上這事孙蒙∠钐模” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵挎峦,是天一觀的道長香追。 經(jīng)常有香客問我,道長坦胶,這世上最難降的妖魔是什么透典? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮顿苇,結(jié)果婚禮上峭咒,老公的妹妹穿的比我還像新娘。我一直安慰自己纪岁,他們只是感情好凑队,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幔翰,像睡著了一般漩氨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上遗增,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天叫惊,我揣著相機(jī)與錄音,去河邊找鬼做修。 笑死霍狰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的饰及。 我是一名探鬼主播蔗坯,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼燎含!你這毒婦竟也來了步悠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瘫镇,失蹤者是張志新(化名)和其女友劉穎鼎兽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铣除,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谚咬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了尚粘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片择卦。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖郎嫁,靈堂內(nèi)的尸體忽然破棺而出秉继,到底是詐尸還是另有隱情,我是刑警寧澤泽铛,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布尚辑,位于F島的核電站,受9級特大地震影響盔腔,放射性物質(zhì)發(fā)生泄漏杠茬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一弛随、第九天 我趴在偏房一處隱蔽的房頂上張望瓢喉。 院中可真熱鬧,春花似錦舀透、人聲如沸栓票。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽走贪。三九已至,卻和暖如春链烈,著一層夾襖步出監(jiān)牢的瞬間厉斟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工强衡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留擦秽,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓漩勤,卻偏偏與公主長得像感挥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子越败,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355