前言:
我們要實(shí)現(xiàn)一個(gè)自己的pod第三方庫(kù),需要以下幾個(gè)步驟:
1.源碼框架(源碼以提交到GitHub為例
2.需要描述文件.podspec
3.提交描述文件到遠(yuǎn)程索引庫(kù)
4.更新本地索引
先來(lái)看看這張圖,方便大家理解這個(gè)過(guò)程!

我們可以把cocoapods看作一個(gè)遠(yuǎn)程索引庫(kù),遠(yuǎn)程索引庫(kù)里面有非常多的.podspec文件!而.podspec文件里記錄的是框架的名稱版本號(hào)真實(shí)的源碼地址等!
有時(shí)候,我們?cè)谑褂胮od search '庫(kù)名' ?搜索已經(jīng)有了的第三方時(shí),會(huì)出現(xiàn)如下錯(cuò)誤。這是因?yàn)樽约旱谋镜厮饕龓?kù)是舊的(也就是別人上傳這個(gè)庫(kù)之前,您已經(jīng)pod setup 安裝里本地索引庫(kù),而再?zèng)]有更新過(guò)!
pod search ?‘name’ ?是在本地的索引庫(kù)里根據(jù)這個(gè)key(也就是name)來(lái)找到這個(gè)索引文件,本地沒(méi)有,則找不到。
我們?cè)谑褂胮od install安裝第三方庫(kù)時(shí),就是根據(jù)這個(gè)索引文件里的源碼鏈接安裝的。
pod install 和pod update 有什么區(qū)別呢?pod update 也可以安裝第三方,它參照的Podfile 文件,如果咱們
沒(méi)指定Podfile 里第三方版本號(hào),pod update 就會(huì)更新到最新。(PS合作開發(fā)會(huì)沖突
pod install安裝第三方參照Podfile.lock? 里是有版本記錄的。
Pod setup 會(huì)從遠(yuǎn)程索引庫(kù) 克隆到本地, pod search 從本地索引庫(kù)查找
192:~ teemo$ pod search 'TMManager'
[!] Unable to find a pod with name, author, summary, or description matching `TMManager`
//找不到這個(gè),如果確定有的話,就是自己本地檢索庫(kù)沒(méi)更新
執(zhí)行pod steup就可以了(如果實(shí)在不行,則刪除下面路徑下的。search_index.json文件(15M左右)
192:~ teemo$ cd ? ? ?/Users/teemo/Library/Caches/CocoaPods
192:CocoaPods teemo$ open .
刪除后,再執(zhí)行pod steup即可
1.準(zhǔn)備工作:源碼框架(源碼以提交到GitHub為例
1.在GitHub新建個(gè)倉(cāng)庫(kù),復(fù)制新建的倉(cāng)庫(kù)的URL,下面?zhèn)溆?/p>
最下面夠選了,會(huì)生成兩個(gè)文件(如果沒(méi)勾選,需要自己后面創(chuàng)建


2.本地項(xiàng)目新建文件夾名稱為TMManager
在終端cd 到TMManager 目錄下 按順序執(zhí)行,客隆項(xiàng)目下來(lái)后,然后把自己的開源庫(kù)放進(jìn)去
git clone URL ? //git clone?https://github.com/TeeMoYan/TMManager.git//從遠(yuǎn)端客隆項(xiàng)目下來(lái)
git add . ? //提交到暫緩區(qū)
git commit -m '第一次提交' ?//本地提交?
git push ?//提交到遠(yuǎn)程倉(cāng)庫(kù)
此時(shí)在github上已經(jīng)可以看到項(xiàng)目上傳到遠(yuǎn)端倉(cāng)庫(kù)了。刷新github 可以看見
2.需要描述文件.podspec
還是在項(xiàng)目TMManager 下,執(zhí)行如下命令,新建一個(gè)TMManager.podspec 文件
pod spec create TMManager ? //此時(shí),在TMManager下有了TMManager.podspec文件
用Xcode打開這個(gè)文件,修改.podspec 文件以下幾個(gè)地方(復(fù)制刪除序號(hào)和中文也可
?1.???? s.summary????? = "TMManager" ?改成你的倉(cāng)庫(kù)名就行了
?2. ? ?s.description? = "TMManager的詳細(xì)描述,要注意比s.summary的描述要長(zhǎng)"
? ? // s.description = <<-DESC
? ? ? ? ? ?TMManager的詳細(xì)描述,要注意比s.summary的描述要長(zhǎng)//要么這樣寫(不能合到一行),要么和上面的一樣
????????????????????????????????????????DESC?
?3. ? ?s.homepage ? ?= "https://github.com/TeeMoYan/TMManager.git" ?改成你github的倉(cāng)庫(kù)地址就行了
?4. ? ?#? s.license ? ?= "MIT" ?這里要注銷掉
?5. ? ?s.license????? = { :type => "MIT", :file => "LICENSE" } ?
?6. ? ?s.author ? ? = { "name" => “郵箱” }改成你的名字和郵箱
?7. ? ? s.source ? ?= { :git => "https://github.com/TeeMoYan/TMManager.git", :tag => "#{s.version}”?}
?8. ? # s.exclude_files = "Classes/Exclude” 注釋掉
9. ? ?s.source_files = "Demo", "Demo/**/*.{h,m}" ? ?//和.podspec ?寫同級(jí)文件夾名字
10. ? s.license = { :type => "MIT", :file => "LICENSE" }//和 podspec 同目錄下要有LICENSE文件,沒(méi)有自己創(chuàng)建個(gè)同名文件也可以(沒(méi)寫內(nèi)容也可以成功
11. ? s.platform = :ios s.platform = :ios, "8.0"http://指定最小支持系統(tǒng)
12. ? s.requires_arc = true //是否使用ARC
13. ? s.frameworks = 'Foundation', 'CoreGraphics', 'UIKit' //使用框架
//此時(shí)修改完畢,關(guān)閉保存
使用pod lib lint ?TMManager.podspec 來(lái)驗(yàn)證,寫的對(duì)不對(duì)
//TMManager passed validation. 出現(xiàn)綠色這行話,則沒(méi)有問(wèn)題,有問(wèn)題則繼續(xù)修改
接下還 在TMManager 目錄下給項(xiàng)目打個(gè)標(biāo)簽(tag ?剛才沒(méi)有更改.podspec 里面的version ?他們要保持一致
cd /Users/teemo/Desktop/TMManager
git tag '0.0.1' ? //打個(gè)標(biāo)簽為 0.0.1
192:TMManager teemo$ git tag。//查看標(biāo)簽
git push --tags ? //推送tag到遠(yuǎn)端倉(cāng)庫(kù),此時(shí)刷新github 可以看見
3.提交描述文件到遠(yuǎn)程索引庫(kù)
接下還 在TMManager 目錄下,
pod trunk register TeeMoYan@163.com 'TeeMo' --verbose//執(zhí)行后出現(xiàn)這個(gè),則去你的郵箱驗(yàn)證你收到的郵件。如果沒(méi)有,去垃圾箱看一下。
[!] Please verify the session by clicking the link in the verification email that has been sent to TeeMoYan@163.com

驗(yàn)證成功:

驗(yàn)證成功后,在TMManager目錄下執(zhí)行
?pod trunk push TMManager.podspec
出現(xiàn)下圖,上傳成功!

4.更新本地索引
接下來(lái),我們來(lái)搜一下!(別忘了我們之前說(shuō)的,先刪除/Users/teemo/Library/Caches/CocoaPods 路徑下的search_index.json文件(15M左右),執(zhí)行pod setup 后再 pod search ‘TMManager’

是不是搜到了呢!