用CocoaPods創(chuàng)建自己的Podspec供別人使用

創(chuàng)建Podspec

首先在項(xiàng)目中創(chuàng)建一個(gè)Podspec


$ pod spec create GQCategory

編輯Podspec

用上述命令創(chuàng)建好的Podspec會(huì)被填上默認(rèn)的參數(shù)并有注釋說(shuō)明了每個(gè)參數(shù)的含義及用法活箕,這里只介紹幾個(gè)常用的參數(shù)

Pod::Spec.new do |s|
  s.name         = "GQCategory"
  s.version      = "0.0.5"
  s.summary      = "常用的分類(lèi)封裝."

  
  s.description  = <<-DESC
            第一個(gè)podspec
                   DESC

  s.homepage     = "https://github.com/gqisabug/GQCategory"
  s.license      = { :type => "MIT", :file => "LICENSE" }
  s.author             = { "gqisabug" => "gqlyan419@163.com" }
  
  s.platform     = :ios, "7.0"
  s.source       = { :git => "https://github.com/gqisabug/GQCategory.git", :tag => s.version }

## 這里不支持ssh的地址力麸,只支持HTTP和HTTPS,最好使用HTTPS
  ## 正常情況下我們會(huì)使用穩(wěn)定的tag版本來(lái)訪(fǎng)問(wèn)育韩,如果是在開(kāi)發(fā)測(cè)試的時(shí)候克蚂,不需要發(fā)布release版本,直接指向git地址使用
  ## 待測(cè)試通過(guò)完成后我們?cè)侔l(fā)布指定release版本埃叭,使用如下方式
  #s.source       = { :git => "http://EXAMPLE/O2View.git", :tag => version }

  s.source_files  = "GQCategory/GQCategory/**/*.{h,m}"
  s.requires_arc = true

end

s.name:名稱(chēng)悉罕,pod search 搜索的關(guān)鍵詞
s.version:版本
s.summary:簡(jiǎn)介,pod search 搜索的關(guān)鍵詞
s.homepage:主頁(yè)地址类早,例如Github地址
s.license:許可證
s.author:作者
s.social_media_url:社交網(wǎng)址
s.platform:平臺(tái)
s.source:Git倉(cāng)庫(kù)地址,例如在Github地址后邊加上 .git 就是Git倉(cāng)庫(kù)地址欣范,常見(jiàn)寫(xiě)法如下

s.source = { :git => "倉(cāng)庫(kù)地址", :commit => "68defea" }
s.source = { :git => "倉(cāng)庫(kù)地址", :tag => 1.0.0 }
s.source = { :git => "倉(cāng)庫(kù)地址", :tag => s.version }
  • commit => "68defea" 表示將這個(gè)Pod版本與Git倉(cāng)庫(kù)中某個(gè)commit綁定
  • tag => 1.0.0 表示將這個(gè)Pod版本與Git倉(cāng)庫(kù)中某個(gè)版本的comit綁定
  • tag => s.version 表示將這個(gè)Pod版本與Git倉(cāng)庫(kù)中相同版本的comit綁定
"Directory1/*"
"Directory1/Directory2/*.{h,m}"
"Directory1/**/*.h"
  • “*” 表示匹配所有文件
  • “*.{h,m}” 表示匹配所有以.h和.m結(jié)尾的文件
  • “**” 表示匹配所有子目錄

s.resources:需要包含的圖片等資源文件
s.dependency:依賴(lài)庫(kù),不能依賴(lài)未發(fā)布的
s.dependency:依賴(lài)庫(kù)屏富,如有多個(gè)可以這樣寫(xiě)
s.requires_arc:是否要求ARC

上傳到git

將編輯好的Podspec 上傳到git并給這次更新打上tag并推送到倉(cāng)庫(kù)(需與文件里一致)

  • 創(chuàng)建標(biāo)簽
$ git tag v1.0
//標(biāo)簽?zāi)J(rèn)是打在最新的commit上蛙卤,如果想要給某個(gè)之前的操作打颤难,可以先找到歷史記錄
$ git log --pretty=oneline --abbrev-commit
執(zhí)行后輸出如下
6224937 add merge
6224937是commit的id
$ git tag v0.9 6224937
就可以給add merge這個(gè)操作打上標(biāo)簽了
  • 查看所有標(biāo)簽
$ git tag
  • 刪除標(biāo)簽
//刪除本地的
$ git tag -d v0.1
//刪除遠(yuǎn)程
$ git push origin :refs/tags/v0.9
  • 推送標(biāo)簽到遠(yuǎn)程
//推送一個(gè)
$ git push origin v1.0
//推送所有尚未被推送的本地標(biāo)簽
$ git push origin --tags

驗(yàn)證Podspec

$ pod spec lint GQCategory.podspec
//如果依賴(lài)庫(kù)(s.dependency)包含了.a靜態(tài)庫(kù)已日,需要在后面加上--use-libraries
//如果有警告,需要加上 --allow-warnings來(lái)忽略警告以通過(guò)驗(yàn)證
//可以加上--verbose來(lái)查看錯(cuò)誤

發(fā)布Podspec

需要先注冊(cè)

pod trunk register gqlyan419@163.com "gaoqi"

注冊(cè)成功后驗(yàn)證郵箱就可以發(fā)布自己的pod了

pod trunk push GQCategory.podspec
//這里也可以加上驗(yàn)證時(shí)的參數(shù)--allow-warnings 等

版本升級(jí)

修改 .podspec 中的 s.version 為更高的版本號(hào)飘千,并修改 s.source 中對(duì)應(yīng)的 Git 版本护奈。提交到Git霉旗,并打上對(duì)應(yīng)tag蛀骇。然后再講修改后的pod spec發(fā)布到Cocoapods就可以完成更新。
-建議s.source采用

s.source = { :git => "倉(cāng)庫(kù)地址", :tag => s.version }

寫(xiě)法简僧,這樣就與s.version綁定了岛马,每次更新只需要改版本號(hào)即可

創(chuàng)建私有庫(kù)

//打開(kāi)隱藏的命令:
defaults write com.apple.finder AppleShowAllFiles -bool true
//關(guān)閉隱藏的命令:
defaults write com.apple.finder AppleShowAllFiles -bool false

接著需要重啟一下 Finder, 可以按住 option + 右鍵 Finder 圖標(biāo)選擇重啟伞矩。然后打開(kāi)隱藏目錄 .cocoapods (這個(gè)目錄在你的個(gè)人目錄底下, ~/.cocoapods 或 /Users/[username]/.cocoapods)

1.創(chuàng)建一個(gè)私有的 Spec Repo

在自己的私有g(shù)it服務(wù)器(GitHub,Gitlab,Coding, Bitbucket等)上創(chuàng)建一個(gè)空的倉(cāng)庫(kù)乃坤。

2.添加私有Spec Repo

然后打開(kāi)終端沟蔑,輸入命令行:

pod repo add [本地Spec Repo名稱(chēng)][遠(yuǎn)程Spec Repo地址]

例如:

pod repo add MySpecs https://xxxxxxxxxxx/MySpecs.git

這里的xxxxxxx就是自己的git地址。
此時(shí)跳轉(zhuǎn)到文件夾:repos厅须。就是:

~/.cocoapods/repos/

除了原來(lái)的master,會(huì)出現(xiàn)一個(gè)你自己的MySpecs: cd進(jìn)去 執(zhí)行:

pod repo lint

時(shí)間較長(zhǎng)嚷硫,耐心等待

3.驗(yàn)證Podspec

參考上面的步驟新建Podspec并驗(yàn)證成功后提交到倉(cāng)庫(kù)

4.把要共享的庫(kù)添加到私有Spec Repo中

執(zhí)行命令:
pod repo push [本地Spec Repo名稱(chēng)][podspec文件路徑] --allow-warnings
例如:
pod repo push MySpecs ~/本地路徑.podspec --allow-warnings
成功后能在你的MySpecs里面看到新加的庫(kù)

5.使用

和原來(lái)的常規(guī)的使用cocoapods一樣,不過(guò)需要在Podfile里面添加:

source 'http://xxxxxxxxxxx/zhanggui/MySpecs.git' //你的私有庫(kù)的地址
source 'https://github.com/CocoaPods/Specs.git'  //原來(lái)的系統(tǒng)的地址
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市皿曲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坞古,老刑警劉巖痪枫,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奶陈,死亡現(xiàn)場(chǎng)離奇詭異附较,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)徐勃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)肖爵,“玉大人臀脏,你說(shuō)我怎么就攤上這事∶肜玻” “怎么了帝蒿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)暴氏。 經(jīng)常有香客問(wèn)我答渔,道長(zhǎng)沼撕,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任磨总,我火速辦了婚禮蚪燕,結(jié)果婚禮上馆纳,老公的妹妹穿的比我還像新娘汹桦。我一直安慰自己舞骆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布猖凛。 她就那樣靜靜地躺著绪穆,像睡著了一般玖院。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上试溯,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天遇绞,我揣著相機(jī)與錄音燎窘,去河邊找鬼。 笑死付鹿,一個(gè)胖子當(dāng)著我的面吹牛舵匾,可吹牛的內(nèi)容都是我干的谁不。 我是一名探鬼主播拍谐,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼轩拨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了晕翠?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤淋肾,失蹤者是張志新(化名)和其女友劉穎硫麻,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體樊卓,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拿愧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碌尔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浇辜。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖唾戚,靈堂內(nèi)的尸體忽然破棺而出柳洋,到底是詐尸還是另有隱情,我是刑警寧澤叹坦,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布熊镣,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏毕箍。R本人自食惡果不足惜荷逞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一顽耳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧限次,春花似錦、人聲如沸旱幼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至里初,卻和暖如春刁品,著一層夾襖步出監(jiān)牢的瞬間挑随,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工担猛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留先改,地道東北人比驻。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓氯庆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荒给,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容