前言
? ?在項目的開發(fā)過程中我們經(jīng)常會使用到很多的第三方框架请敦,通過CocoaPods我們可以非常容易的去管理這些第三方庫,至于CocoaPods如何使用储玫,這不是我們今天討論的重點侍筛,這里我就不再贅述了,不太明白的小伙伴們可以參考這篇文章:用CocoaPods做iOS程序的依賴管理
? ?今天我們討論的重點是如何將屬于我們自己寫的組件或者是庫開源出去撒穷,用戶通過一句 ?pod install ?就可以集成我們寫的框架呢匣椰? 不著急,下面我將帶領(lǐng)大家一步步的將屬于自己的pods發(fā)布到CocoaPods中端礼,下面我就簡單的以一個小Demo來做演示
工作原理
從網(wǎng)上看到一張?zhí)貏e好的圖 這里就直接拿過來用了
一.上傳項目到代碼托管平臺
? ?首先我們需要在第三方代碼托管平臺上創(chuàng)建一個屬于我們自己的Repository禽笑,假如名稱為GZPCode,創(chuàng)建好之后將我們的庫上傳到github上入录,并且打上tag,這個非常重要佳镜。將tag push到github上之后我們就可以在release 文件中看到一個0.1.0的版本了僚稿,注意這里一定要先將我們的庫commit 之后在打tag,否則的話會出問題
二.注冊trunk
如果不知道我們曾經(jīng)有沒有注冊過trunk,那么可以使用下面的命令向trunk服務(wù)器查詢自己的注冊信息:
pod trunk me
否則我們可以通過下面的命令去注冊trunk:
pod trunk register zswangzp@163.com 'gzp' ?--verbose
大家在注冊的時候需要將郵箱和用戶名替換成自己的即可蟀伸,--verbose參數(shù)是為了便于輸出在注冊過程中的調(diào)試信息蚀同。執(zhí)行上面的語句后,你的郵箱將會受到一封帶有驗證鏈接的郵件啊掏,如果沒有請去垃圾箱找找蠢络,有可能被屏蔽了。點擊郵件的鏈接就完成了trunk注冊流程脖律。
點擊郵箱中的鏈接則會跳轉(zhuǎn)到下圖所示的界面谢肾,表明已經(jīng)注冊成功了
三.配置PodSpec,并且推送到CocoaPods服務(wù)器
1、添加podspec描述文件
首先在我們框架的同級目錄下創(chuàng)建一個名稱為 GZPCode 的PodSpec的文件小泉,代碼如下
pod spec create GZPCode
至于pod spec文件芦疏,它是用來描述我們的框架的一些具體信息的,比如框架的作者微姊、版本酸茴、下載地址等信息。我們在 pod install ?安裝第三方框架的時候就是根據(jù)這個文件中的下載地址去Clone 具體代碼的兢交。通過上面這個命令我們就創(chuàng)建了一個GZPCode.podspec 文件薪捍,用XCode 打開這個文件 我們可以看到它里面有非常多的信息,這里我們講解幾個必要的:
Pod::Spec.new do |s|
s.name ? ? ? ? = "GZPCode" ?#項目名稱
s.version ? ? ?= "0.1.0" ? ?#項目版本
s.summary ? ? ?= "GZPCode. 框架的簡單描述" #框架的簡單描述
s.description ?= <<-DESC
框架的具體描述配喳,這里的信息要長一些不然會報錯的酪穿。。晴裹。被济。。涧团。只磷。。泌绣。钮追。
DESC
s.homepage ? ? = "https://github.com/Guanzhangpeng/GZPCode" #該框架在github上的主頁地址
s.license ? ? ?= "MIT" ? #協(xié)議
s.author ? ? ? ? ? ? = { "gzp" => "zswangzp@163.com" } ?#作者
s.platform ? ? = :ios, "8.0" ?#最低適配的版本
s.source ? ? ? = { :git => "https://github.com/Guanzhangpeng/GZPCode.git", :tag => "#{s.version}" } #源代碼的具體地址
s.source_files ?= "Classes", "Category/**/*.{h,m}" #框架相對于spec文件的路徑
s.exclude_files = "Classes/Exclude"
s.requires_arc = true ? ? #支持arc
end
2、將podspec文件通過trunk推送給CocoaPods服務(wù)器
相信上面的注釋已經(jīng)寫的很詳細(xì)了阿迈,編輯完podspec文件后元媚,需要驗證一下這個文件是否可用,如果有任何WARNING或者ERROR都是不可以通過的,它就不能被添加到Spec Repo中惠毁,不過是可以存在的犹芹,當(dāng)然我們也可以通過 --allow-warnings 來屏蔽警告
pod spec lint GZPCode.podspec
當(dāng)看到 ?GZPCode.podspec passed validation. ?之后 就表明已經(jīng)驗證通過了,那么接下來我們就可以通過trunk推送pod spec文件到CocoaPod官方庫中了. ?CocoaPods/Specs代碼庫的地址是:https://github.com/CocoaPods/Specs
pod trunk push GZPCode.podspec ? ?
上面的代碼幫我們做了下面幾件事情:
1鞠绰、驗證你的podspec文件是否合法腰埂。在trunk方式之前我們一般用“pod lib lint”命令進行驗證。
2蜈膨、上傳podspec文件到trunk服務(wù)器(其實最終也會自動添加到https://github.com/CocoaPods/Specs中屿笼,只是使用trunk方式省去了以前先fork在pull request的繁瑣操作)
3、將你上傳的podspec文件轉(zhuǎn)成json格式文件
執(zhí)行上面的push操作翁巍,就相當(dāng)于你把你的源代碼提交給CocoaPods團隊審核了驴一,一般需要幾秒鐘或者幾分鐘就可以完成了。當(dāng)我們看到下面這個界面就表示我們的GZPCode.podspec 文件已經(jīng)成功的上傳到了CocoaPod官方庫中了灶壶。
四.更新本地pod索引庫
? ? 經(jīng)過上面的步驟后我們已經(jīng)成功的將spec文件上傳到了CocoaPod官方庫中了肝断,但是我們本地的pod索引庫還不是最新的,所以這個時候我們需要通過? pod setup? 將遠(yuǎn)程的CocoaPods 索引庫更新到我們本地驰凛。pod setup其實在做這么一件事:Cocoapods在將https://github.com/CocoaPods/Specs 的信息下載到你電腦的~/.cocoapods目錄下并進行文件比對胸懈,總數(shù)據(jù)大小大約在300MB左右,再加上服務(wù)器在國外恰响,因此速度會比較慢趣钱。在執(zhí)行過程中你也可以新開一個Terminal窗口,cd到~/.cocoapods目錄胚宦,用du -sh *來查看下載進度首有。第一次會比較慢,第一次以后只需要幾秒鐘即可完成枢劝。
五.測試使用
完成上面的步驟后我們可以來測試下 看看我們的框架是否可以通過 CocoaPods來集成了井联,首先我們在終端上 搜索下我們的框架 ?pod search GZPCode,很遺憾 沒有搜索到您旁,而且給我們一個紅色的提示
[!] Unable to find a pod with name, author, summary, or description matching `GZPCode`
這是因為什么原因呢低矮?其實原因很簡單,這是因為我們本地索引庫的檢索文件 search_index.json 緩存造成的結(jié)果被冒,我們將索引緩存路徑 ~/Library/Caches/CocoaPods/ 下的這個json文件 刪除后再次搜索就可以搜索到了
是不是很神奇? 下面你就可以通過 pod的命令來集成這個框架了轮蜕。
謝謝大家昨悼,歡迎討論。