目錄
● 創(chuàng)建殼工程TZQDemo穷劈,使用cocoaPods創(chuàng)建私有庫TZQTool,并上傳到Github遠(yuǎn)端其垄。
● 修改私有庫的描述文件玷过,上傳到Github遠(yuǎn)端爽丹。
●?驗(yàn)證私有庫有效性。
●?搜索和使用私有庫TZQTool辛蚊。
一粤蝎、前言
組件化越來越流行,以及很多人想把自己寫的組件分享給他人使用袋马。iOS 大部分都采用CocoaPods包管理工具安裝組件初澎,本文總結(jié)了一下如何使用CocoaPods將自己的組件制作成私有庫,方便自己和他人使用虑凛,如有錯(cuò)誤請(qǐng)留言指正碑宴。show me the code, talk is cheap!
二桑谍、制作私有庫
1延柠、在制作私有庫之前,先搜索一下CocoaPods锣披,看看是否有相同名字的庫贞间,如有建議換一個(gè)私有庫的名字。
pod search AAA? ? ? ? ? ? ? ? // AAA是你的私有庫的名字雹仿。
2增热、 制作殼工程TZQDemo和TZQTool私有庫。
1)使用X-Code創(chuàng)建一個(gè)工程胧辽,添加PodFile文件峻仇,運(yùn)行pod install,生成一個(gè).xcworkspace工程邑商,點(diǎn)擊運(yùn)行.xcworkspace工程础浮。
2)在工程目錄下添加Components文件夾帆调,用來存放本地組件庫奠骄。使用指令豆同,先查詢一下本地有那些pod repo。
然后進(jìn)入到Components含鳞,使用pod lib create TZQTool 指令生成TZQTool組件影锈。
pod repo? ? ? ? ? ? ? ? ? ?// 查看本地的所有的描述文件。
pod lib create TZQTool? ? // 創(chuàng)建一個(gè)TZQTool的組件蝉绷。
3)添加代碼到TZQTool中鸭廷,修改TZQTool的描述文件,先在本地驗(yàn)證TZQTool是否可用熔吗。TZQTool是生成一個(gè)當(dāng)前時(shí)間的字符串辆床。可用以后將相應(yīng)的文件導(dǎo)入桅狠,先將.h .m等文件拖入到Classes文件夾讼载,將xib、圖片等資源文件拖入到Assets文件夾中跌,刪除replaceMe文件咨堤。刪除原工程的相關(guān)文件,TZQTime.h和TZQTime.m漩符,不然后面通過本地安裝以后有2份一喘,會(huì)有沖突。運(yùn)行pod install命令嗜暴,從本地安裝組件凸克。安裝后clean一下工程,再運(yùn)行看結(jié)果是否正確闷沥。如果正確萎战,說明本地的組件已經(jīng)創(chuàng)建好,下一步準(zhǔn)備上傳到遠(yuǎn)程倉庫狐赡。
4)在Github上創(chuàng)建遠(yuǎn)程倉庫撞鹉,修改TZQTool.podspec文件,并將組件上傳到遠(yuǎn)程倉庫颖侄。
可以使用git客戶端如soourceTree鸟雏、Tower或者git命令上傳組件到遠(yuǎn)程倉庫。這里用命令行做演示览祖。
cd /Users/apple/Desktop/TZQDemo/Components/TZQTool? // 進(jìn)入到文件夾
git init? ? ? ? ? ?// 初始化孝鹊,生成.git記錄文件
add .? ? ? ? ? ?// 所有的文件加入到版本控制
git commit -m"第一次提交TZQTool"? ? ? ? // 將加入到版本控制的文件,提交到本地倉庫
git remote add origin https://github.com/tzq20070604/TZQTool.git? ? ? ? ?// 給本地的倉庫關(guān)聯(lián)到遠(yuǎn)程倉庫
git push origin master -f? ? ? // 將本地倉庫同步到遠(yuǎn)程倉庫展蒂,-f 表示強(qiáng)制提交又活,因?yàn)樘峤磺耙话愣家猽pdate,強(qiáng)制提交不用苔咪。因?yàn)镚ithub上還有readme之類的文件,需要解決沖突再pull柳骄,比較麻煩团赏,基于是初始工程,直接強(qiáng)制push上去即可耐薯。查看遠(yuǎn)程倉庫舔清,可以看到自己提交的內(nèi)容。到此完成把工程提交到遠(yuǎn)程倉庫的任務(wù)曲初。
5)給組件打tag体谒,tag的目的是讓其他人能夠在pod中引用到具體版本。
git tag 1.0? ? ? ? ? // 打上版本臼婆,要和TZQTool.podspec文件中tag一致
git push --tags? ?// 同步版本到遠(yuǎn)程倉庫
6)制作描述文件的遠(yuǎn)程私有庫TZQSpec抒痒,并且同步描述文件到遠(yuǎn)程私有庫TZQSpec。多個(gè).spec文件可以共用一個(gè)倉庫颁褂。
7)提交描述文件到遠(yuǎn)程倉庫故响。
pod repo add TZQSpec https://github.com/tzq20070604/TZQSpec.git? ? ?// 在本地創(chuàng)建一個(gè)TZQSpec的repo文件,并關(guān)聯(lián)到遠(yuǎn)程痢虹。這個(gè)文件可以在本地看到被去。
pod repo push TZQSpec TZQTool.podspec --verbose --allow-warnings? ?// 定位到TZQTool.podspec所在的文件夾,向TZQSpec提交podspec奖唯。
三惨缆、驗(yàn)證私有庫有效性。
1丰捷、驗(yàn)證.podspec文件的有效性坯墨。使用第一句有警告,建議使用第二句病往。出現(xiàn)TZQTool passed validation.表示驗(yàn)證成功捣染。如果此時(shí)搜索pod search AAA,是搜索到本地的停巷。
pod lib lint --verbose? ?// 可能出現(xiàn)有警告的錯(cuò)誤
pod lib lint --verbose --allow-warnings
檢查.podspec文件是否合法耍攘。注意:1)帶有靜態(tài)庫的還有加條件--use-libraries。?2).podspec 不能帶有本地的依賴畔勤。3)如果有私有依賴庫蕾各,驗(yàn)證時(shí)還要加上依賴的路徑。
pod lib lint --sources=https://github.com/tzq20070604/TZQSpec.git,https://github.com/CocoaPods/Specs.git --use-libraries --allow-warnings
2庆揪、發(fā)布.podspec文件到CocoaPods的master分支式曲。成功以后,其他人可以使用pod search AAA 搜索到。
如果是第一次創(chuàng)建吝羞,需要注冊(cè)兰伤。
注冊(cè)trunk
pod trunk register xxx@cocoapods.org 'huangxx' --description='huangxx' macbook pro' --verbose
xxx@cocoapods.org- 一個(gè)真實(shí)存在的郵箱,不一定非得是@cocopods.org钧排,例如QQ敦腔。
huangxx - 用戶名
huangxx's macbook pro - 描述性文字
如果所有的步驟都能成功的話,你會(huì)受到一份郵件卖氨,需要點(diǎn)擊驗(yàn)證下会烙。
3、如果是公有庫還需要發(fā)布到cocoaPods trunk上筒捺。私有庫就不用了。如果私有庫發(fā)布到trunk上會(huì)報(bào)錯(cuò)纸厉。
[!] Source code for your Pod was not accessible to CocoaPods Trunk. Is it a private repo or behind a username/password on http?
查看trunk
pod trunk me
可以查看你已經(jīng)注冊(cè)的信息系吭,其中包含你的name、email颗品、since肯尺、Pods、sessions躯枢,其中Pods為你往CocoaPods提交的所有的Pod则吟!
添加其他維護(hù)者(如果你的pod是由多人維護(hù)的,你也可以添加其他維護(hù)者)
pod trunk add-owner XPRACSignal wangxx@cocoapods.org
發(fā)布到trunk锄蹂,--allow-warnings可以避免驗(yàn)證警告氓仲。會(huì)去更新Updating spec repo `master`,需要等待一段時(shí)間得糜。
pod trunk push TZQTool.podspec --verbose --allow-warnings
如果你之前提交過Pod敬扛,那么trunk之后你需要去Claim your Pod認(rèn)領(lǐng)下!
報(bào)找不到MBKit repo的錯(cuò)誤朝抖。此時(shí)需要執(zhí)行pod repo update 刷新一下本地repo的索引啥箭。再執(zhí)行上面的命令,如果是第一次發(fā)布需要注冊(cè)登記治宣,還需要使用下面的命令急侥,注冊(cè)郵箱和用戶名,郵箱會(huì)收到一條鏈接侮邀,點(diǎn)擊該鏈接即可認(rèn)證坏怪。
pod trunk register 525835890@qq.com "tzq"
pod repo update --verbose
四、使用生成的私有庫
1豌拙、因?yàn)槭撬接袔焐滦仨毎阉接袔斓膔epo路徑加上,讓pod知道去那里找到這個(gè)私有庫按傅。
source 'https://github.com/tzq20070604/TZQSpec.git'
pod TZQTool?
或者
pod TZQTool? :git=>'https://github.com/tzq20070604/TZQSpec.git',:tag=>'1.0'
2捉超、使用私有庫
五胧卤、引用文章
iOS模塊化開發(fā) 之 通過CocoaPods調(diào)用自己iOS模塊化開發(fā) 之 通過CocoaPods調(diào)用自己封裝的私有庫 (一)
iOS代碼組件化(利用CocoaPods創(chuàng)建私有庫)