使用CocoaPods創(chuàng)建私有倉庫 spec repo

1. 創(chuàng)建私有Spec Repo

什么是Spec Repo?它是所有的Pods的一個索引,就是一個容器,所有公開的Pods都在這個里面,它實際是一個Git倉庫remote端在GitHub上,但是當(dāng)你使用了Cocoapods后它會被clone到本地的~/.cocoapods/repos目錄下,可以進入到這個目錄看到master文件夾就是這個官方的Spec Repo了。

第一步:先在GitHub上創(chuàng)建一個repository


創(chuàng)建一個repository

創(chuàng)建好之后,需要使用的是下面這個鏈接:


項目鏈接

第二步:在終端輸入以下命令:

# pod repo add [Private Repo Name] [GitHub HTTPS clone URL]

pod repo add test https://github.com/jinyuisme/test.git

此時如果成功的話進入到~/.cocoapods/repos目錄下就可以看到test(只是個名字,會根據(jù)你設(shè)置的名稱而不同) 這個目錄了。至此第一步創(chuàng)建私有Spec Repo完成。剛開始的時候你的test應(yīng)該是空的,只是多個Specs-Repo文件夾而已。

2. 創(chuàng)建Pod項目工程文件?

我們將要使用?Pod Lib Create來創(chuàng)建一個工程。 就拿我創(chuàng)建的test為例子具體講一下這里是如何操作的,先cd到要創(chuàng)建項目的目錄然后執(zhí)行

?pod lib create test

之后會問我們幾個問題,1.選擇一個平臺:iOS;2.所使用的語言:(根據(jù)自己實際情況選擇swift?objc);3.是否需要一個例子工程:Yes;4.選擇一個測試框架:Specta;5.是否基于View測試:Yes;6.類的前綴:TS。 輸入完成之后會自動執(zhí)行pod install命令創(chuàng)建項目并生成依賴。


創(chuàng)建項目

在目錄中我們可以看到剛才創(chuàng)建的項目,目錄就不一一列舉,我們需要在文件夾中添加庫文件和資源,并配置podspec文件。我把需要上傳的組件放入test/Classes中,然后進入Example文件夾執(zhí)行pod update命令,再打開項目工程可以看到,剛剛添加的組件已經(jīng)在Pods子工程下Development Pods/PodTestLibrary中了,然后編輯demo工程,進行所需編譯運行,沒問題我們再進行下一步操作。


導(dǎo)入相關(guān)文件


xcode中的pod目錄

3.添加并提交到遠端倉庫

在終端繼續(xù)操作

git add . ? ??

git commit -s -m?"Initial Commit of Library"

git remote add origin?git@github.com:jinyuisme/test.git #添加遠端倉庫

git push origin master #提交到遠端倉庫

如果輸入$ git remote add origin?git@github.com:jinyuisme(github用戶名)/test(項目名).git?提示出錯信息:fatal: remote origin already exists.

解決辦法如下:

git remote rm origin

git remote add origin?git@github.com:jinyuisme/test.git

然后繼續(xù)執(zhí)行g(shù)it push origin master操作,如果出現(xiàn)以下信息,說明操作不成功


未添加ssh key

問題原因:

在git上沒有創(chuàng)建SSH?Key

解決方法:

繼續(xù)在終端輸入以下指令

ssh-keygen -t rsa -C "username" (注:username為你git上的用戶名)

三次回車,如有看到The key's randomart image is,代表你的SSH Key生成成功了。然后輸入指令:

cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB 開頭的一長串就是你的SSH Key了。


創(chuàng)建SHH key成功

然后將一長串SSH Key粘貼到自己的git賬戶上。


粘貼SSH Key

然后再執(zhí)行一次git push origin master操作,如果出現(xiàn)以下錯誤


rejected

輸入

git push -f?

然后再打上一個tag

git tag -m "first release" "0.1.0"?

git push --tags ? ?#推送tag到遠端倉庫

4.編輯podspec文件

做完這些就可以開始編輯podspec文件了,以下就是我的podspec文件

Pod::Spec.new do |s|

s.name = 'test' #名稱

s.version = '0.1.0' #版本號

s.summary = '這是一個工具類' #簡短介紹

s.homepage = 'https://github.com/jinyuisme/test' #主頁

s.license = { :type => 'MIT', :file => 'LICENSE' } #開源協(xié)議

s.author = { 'jinyuisme' => 'EX-ZHANGJINYU001@pingan.com.cn' } #作者信息

s.source = { :git => 'https://github.com/jinyuisme/test.git', :tag => s.version.to_s } #git地址

s.ios.deployment_target = '8.0' #最低支持的ios版本

s.source_files = 'test/Classes/**/*' #開源類

s.dependency 'AFNetworking', '~> 2.3' ? ?#pod第三方依賴

s.requires_arc =true ? ? #是否要求ARC

end?

補充1:s.source_files常見寫法

"Directory1/*"

"Directory1/Directory2/*.{h,m}"

"Directory1/**/*.h"

“*” 表示匹配所有文件

“*.{h,m}” 表示匹配所有以.h和.m結(jié)尾的文件

“**” 表示匹配所有子目錄

補充2:s.source常見寫法

s.source = { :git=>'https://github.com/jinyuisme/test.git', :commit=>"68defea"}

s.source = { :git=>'https://github.com/jinyuisme/test.git', :tag=>0.1.0}

s.source = { :git=>'https://github.com/jinyuisme/test.git', :tag=>s.version.to_s }

commit => "68defea" 表示將這個Pod版本與Git倉庫中某個commit綁定

tag => 0.1.0 表示將這個Pod版本與Git倉庫中某個版本的comit綁定

tag => s.version.to_s 表示將這個Pod版本與Git倉庫中相同版本的comit綁定

5.驗證podspec 有效性

編輯好.podspec文件之后最好先驗證下有效性

pod spec lint test.podspec

驗證過程中:

-> test (0.1.0)

驗證成功:

test.podspec passed validation.

驗證失敗:(驗證失敗有很多種情況,以下進行列舉)

1.只有警告

[!] The spec did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it). ? #這個最簡單,也是最好處理,直接在后面拼接--allow-warnings即可,例:

pod spec lint test.podspec?--allow-warnings

2.有一些錯誤我們不知道原因,可以在后面添加--verbose來查看

pod spec lint test.podspec?--verbose

如果出現(xiàn)如下錯誤,說明第三方庫中包含了.a靜態(tài)庫造成的。雖然并不影響Pod的使用,但是驗證是無法通過的。可以通過 --use-libraries 來讓驗證通過。

pod spec lint test.podspec --verbose?--use-libraries

這種情況下使用 --use-libraries 雖然不會出現(xiàn)錯誤(error),但是有時候會帶來一些警告(waring),警告同樣是無法通過驗證的。這時可以用 --allow-warnings 來允許警告。

pod spec lint test.podspec --verbose?--use-libraries --allow-warnings

6.發(fā)布到CocoaPods

我們使用 Trunk 服務(wù)可以方便的發(fā)布自己的Pod。CocoaPods Trunk 服務(wù)的引入,解決了很多類似的問題。每次使用 Trunk 服務(wù)發(fā)布 Pod 時都會通過 $ pod lint 驗證 .podspec 是否有效。要想使用 Trunk 服務(wù),首先需要使用如下命令注冊自己的電腦。這很簡單,只要你指明你的郵箱地址(spec文件中的)和名稱即可。CocoaPods 會給你填寫的郵箱發(fā)送驗證郵件,點擊郵件中的鏈接就可通過驗證。

pod trunk register 872455130@qq.com "jinyuisme" ??

# pod trunk register [github 郵箱] ["github用戶名"],點擊郵箱中的鏈接點擊之后跳轉(zhuǎn)如下頁面表示注冊成功


注冊成功

然后就可以發(fā)布你的 Pod 了。

pod trunk push test.podspec

發(fā)布時會驗證 Pod 的有效性,如果你在手動驗證 Pod 時使用了 --use-libraries 或 --allow-warnings 等修飾符,那么發(fā)布的時候也應(yīng)該使用相同的字段修飾,否則出現(xiàn)相同的報錯。

pod trunk push test.podspec?--use-libraries --allow-warnings

發(fā)布成功之后我們就可以使用我們添加的pod了。

由于 pod search 是搜索的本地“~/.cocoapods”,所以在其他設(shè)備上可能無法搜到。這時只需要執(zhí)行 pod install 更新下 pod 倉庫即可(不要加 --no-repo-update)。

7.更新pod版本

當(dāng)需要更新 Pod 版本的時候,修改 .podspec 中的 s.version 為更高的版本號,并修改 s.source 中對應(yīng)的 Git 版本。提交到Git,并打上對應(yīng)tag。然后再次執(zhí)行pod trunk push test.podspec將新的 .podspec 發(fā)布到 CocoaPods。更新完成!

為了更新更加方便,版本控制更加清晰,s.source 建議采用如下寫法:

s.source = { :git => 'https://github.com/jinyuisme/test.git', :tag => s.version.to_s

這樣寫將 Git 的版本與 CocoaPods 的版本進行了綁定。每次提交后再給本次提交打上 tag 就完成了更新。而且在 Git 中就可以清晰的看到哪次提交對應(yīng)的哪個 CocoaPods 版本。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,621評論 2 380

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