我們平時開發(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)站上的信息就可以了治拿。