CocoaPods創(chuàng)建私有倉(cāng)庫(kù)

關(guān)于CocoaPods的一些粗淺知識(shí),越感贊嘆其作者的智慧。唯有膜拜與馬不停蹄地的學(xué)習(xí)。
用到的代碼
specs
LibObject
PrivatePodDome

1. 安裝

sudo gem install cocoapods

2. 快速上手

pod init
pod search AFNetworking
pod install
pod update
Podfile.lock
pod install vs pod update
  • pod install
    • 將pod的版本寫(xiě)入Podfile.lock文件中.
    • 對(duì)于已經(jīng)在Podfile.lock中有記錄的Pod下載對(duì)應(yīng)的版本,即便有新的版本,也不會(huì)去更新.
    • 對(duì)于沒(méi)有記錄的,根據(jù)Podfile中的約定,下載版本,并把版本信息寫(xiě)入Podfile.lock中.
  • pod outdated
    • 查詢當(dāng)前所用庫(kù)的最新版本信息.


  • pod update
    • pod update PODNAME --no-update-repo

只有當(dāng)需要更新pod版本時(shí),才用pod update,其余時(shí)間都用pod install

3. 添加本地Repo

創(chuàng)建一個(gè)git倉(cāng)庫(kù),使用pod repo add your_private_spec_repo_name your_private_spec_repo_url添加本地Repo

#添加本地Repo
pod repo add specs https://github.com/lbencs/specs.git

建好以后,用pod repo可以查看當(dāng)前所有repo的信息,可以看到specs已經(jīng)添加到本地。

4. 創(chuàng)建自己的spec

利用pod提供的工具創(chuàng)建一個(gè)spec項(xiàng)目 pod lib create your_project_name

pod lib create LibObject

期間,會(huì)又一些選項(xiàng)需要你去填寫(xiě),填寫(xiě)完后就會(huì)自動(dòng)生成一個(gè)項(xiàng)目


如果停在pod install了。可以直接中斷。改用 pod install --no-repo-update

項(xiàng)目的目錄如下:


分為ExamplePods兩個(gè)主要的目錄。
先看LibObject,分為兩個(gè)目錄
LibObject
|- Assets //用來(lái)存放本地資源,比如圖片、Assets.xcassets等
|- Classes //存放pod.m.h.swift.xib文件等
Example就沒(méi)啥好講的,就是一個(gè)項(xiàng)目。
兩個(gè)目錄以外還有兩個(gè)文件
LICENSE //授權(quán)文件
my_spec_product.podspec

LibObject.podspec

.podspec文件為整個(gè)pod的配置文件。CocoaPods就是通過(guò)這個(gè)文件中的配置,來(lái)管理、拉取指定版本的代碼。


詳細(xì)配置信息內(nèi)容移步

5. 開(kāi)發(fā)與調(diào)試

xcode打開(kāi)項(xiàng)目


有一個(gè)Development Pods的虛擬文件夾,show on folder以后你會(huì)發(fā)現(xiàn),里面的Pod其實(shí)就是Pods文件夾。這意味著你在這個(gè)文件夾下的操作,其實(shí)就是對(duì)Pods文件夾的操作。這樣開(kāi)發(fā)中就可以方便的在視列程序里面進(jìn)行pod的開(kāi)發(fā)了。

!!!!!特別注意,每次往Pod里面添加文件、圖片、等任何非代碼級(jí)別的改動(dòng)的時(shí)候,都需要對(duì)Example程序進(jìn)行一次pod install or pod update一次。 //Todo

why

6. 提交自己的Pods

  1. 創(chuàng)建自己的代碼,完成測(cè)試。
  2. 提交Pod到Spec之前,需要驗(yàn)證一下自己的代碼是否正確。可以通過(guò)pod lib lint --verbose命令驗(yàn)證當(dāng)前pod本地代碼是否運(yùn)行正常。
  3. 測(cè)試通過(guò)以后,可以提交代碼到remote端,并打上跟.podspec文件中,s.version 相同的tag號(hào)
  4. 本地驗(yàn)證通過(guò)以后,就可以提交到遠(yuǎn)程倉(cāng)庫(kù),然后打上對(duì)應(yīng)于version版本號(hào)的tag,在通過(guò)pod spec lint --verbose進(jìn)行測(cè)試,看.podspec文件中對(duì)應(yīng)的代碼是否運(yùn)行通過(guò)。
  5. 通過(guò)測(cè)試以后,通過(guò)pod repo push <#your repo name#> .podspec命提交到上文中創(chuàng)建的specs倉(cāng)庫(kù)
pod repo push specs LibObject.podspec --verbose


已經(jīng)成功添加到specs倉(cāng)庫(kù)之中。

pod必須無(wú)警告、無(wú)錯(cuò)誤,否則可以用 pod repo push specs LibObject.podspec --verbose --allow-warnings

7. 使用

新建一個(gè)Dome,在Podfile中引用私有庫(kù)specs, 然后在引用LibObject


就此,pod引用成功

8. Tips

  1. 怎么在開(kāi)發(fā)中調(diào)試程序
    開(kāi)發(fā)過(guò)程中,可以修改Podfile文件的,將pod版本指向本地。

    對(duì)應(yīng)pod的代碼會(huì)被引入Development Pods
  2. 模塊之間的命名問(wèn)題,最好以模塊為單位添加不同的前綴
  3. Pod之間的引用
#import "Masonry.h"
#import <Masonry/Masonry.h>
  1. 添加pod的某個(gè)tag如0.0.1 到repo后,需要修改代碼但又不想提升tag版本時(shí),注意修改完后清理CocoaPods的本地緩存
rm -rf "${HOME}/Library/Caches/CocoaPods"
pod cache list/cache
  1. 第三方庫(kù)的修改,盡量fork再通過(guò)pod引用
  2. 使用ssh協(xié)議
  3. .gitignore
    有時(shí)候突然想要忽略某個(gè)文件,但是跟新.gitignore以后,remote端并沒(méi)有馬上刪除這個(gè)文件,原因是ignore文件只能忽略沒(méi)有加入版本管理的文件,已經(jīng)被納入了版本管理的文件是無(wú)效的。
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
  1. 解決ArgumentError - invalid byte sequence in US-ASCII錯(cuò)誤
    修改終端語(yǔ)言、地區(qū)等國(guó)際化環(huán)境變量
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
  1. CIssh問(wèn)題
#解決ci遠(yuǎn)程slave訪問(wèn)git時(shí),要求驗(yàn)證私鑰密碼問(wèn)題
#即,pod install 時(shí),跟新pod的訪問(wèn)權(quán)限問(wèn)題
#$SSH_PARIVATE_KEY_PASS變量為私鑰密碼
#為了安全在jenkins的環(huán)境變量里面設(shè)置這個(gè)常量
eval $(ssh-agent)
expect << EOF
 spawn ssh-add $1
 expect "Enter passphrase"
 send "$SSH_PRIVATE_KEY_PASS\r"
 expect eof
EOF

CocoaPods/Specs
CocoaPods安裝和使用教程
How to Create a CocoaPod in Swift

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

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