組件化開發(fā)之-Cocoapods使用及創(chuàng)建發(fā)布自己的Pod

原創(chuàng) 2017-05-09

關(guān)鍵點:

  • Cocoapods安裝及基本用法
  • Cocoapods注冊Trunk
  • 部署一個開源的pod
  • 創(chuàng)建自己的私有的pod

由于要適應(yīng)某些業(yè)務(wù)的快速變化,現(xiàn)目前需要進(jìn)行組件化開發(fā)田绑,其實這是一個很好的改變,關(guān)于如何進(jìn)行組件化開發(fā)彼念、如何將基礎(chǔ)組件業(yè)務(wù)組件進(jìn)行剝離開來、如何使用Mediator模式進(jìn)行業(yè)務(wù)間相互通信相互調(diào)用等浅萧,在后續(xù)進(jìn)行深入分析及實踐之后再來討論逐沙,這里就先從最原始 工具 說起。(順便說一下:既然需要有一個比較大的改變洼畅,也有這個機會來實踐吩案,那就索性從Objective-C過度到Swift來進(jìn)行開發(fā)吧!)帝簇。
???Cocoapods相信你使用第三方框架是經(jīng)常使用到的徘郭,這是一個很好用的iOS管理依賴工具靠益,它既可以讓你很方便的使用第三方庫,也允許你將自己項目中的組件交由它進(jìn)行管理残揉。下面就來說一說如何使用cocoapods管理工具:

Cocoapods工具的安裝

Cocoapods安裝方式有兩種可以直接通過官網(wǎng)下載.app進(jìn)行安裝胧后,不過我比較喜歡命令行安裝(需要依賴ruby環(huán)境,Mac都搭建好了ruby環(huán)境抱环,這個我們不需要去關(guān)心):

   $ sudo gem install cocoapods

可能你在上述安裝過程中會失敗壳快,那可能是因為網(wǎng)絡(luò)的原因,現(xiàn)在我們來替換一下Ruby鏡像:

// 刪除原有的鏡像源  
$ gem sources --remove https://rubygems.org/  

// 添加國內(nèi)最新的鏡像源(因為之前淘寶的那個好像不更新了)
$ gem source -a https://gems.ruby-china.org/  

// 接著執(zhí)行
$ gem sources -l

// 如果出現(xiàn)
> *** CURRENT SOURCES ***
> 
> https://gems.ruby-china.org/

// 說明成功了镇草,現(xiàn)在再來執(zhí)行安裝即可
$ sudo gem install cocoapods

Cocoapods工具的基本的用法

Cocoapods提供了很多功能眶痰,但是我們平常使用的無外乎根據(jù)項目需要創(chuàng)建自己的Podfile、安裝Pod陶夜、更新Pod

// 創(chuàng)建一個自己的Podfile凛驮,首先你必須進(jìn)入到你項目所在的文件夾下面裆站,然后執(zhí)行
$ pod init

// 通過vi查看并編輯你的Podfile(根據(jù)你的需要添加第三方庫)
$ vi Podfile
// 保存Podfile之后条辟,執(zhí)行安裝
$ pod install

// 有時候你可能會需要使用到
$ pod update

tips:什么時候使用pod install 什么時候使用pod update呢,我相信大多數(shù)人比較疑惑

  • pod install: 當(dāng)你在工程中需要安裝新的pods時宏胯。即使你已經(jīng)有了一個Podfile并且之前已經(jīng)執(zhí)行了pod install羽嫡;或者說你需要從你的工程中添加/移除一個pods
  • pod update: 僅僅當(dāng)你想要更新一個新版本的pods

至此你已經(jīng)掌握了Cocoapods最簡單的使用方法了,更多關(guān)于Cocoapods的使用可以至官網(wǎng)Guides 或者通過pod --help 來查看使用方法肩袍。
接下來就來講講如何創(chuàng)建發(fā)布自己的Spec杭棵,首先你需要注冊一個賬號:

Cocoapods注冊Trunk

在你想創(chuàng)建一個自己私有庫或者發(fā)布一個共有的pods之前,你需要有一個Cocoapods Trunk:

$ pod trunk register [Your-Email] '[Your-Name]' --description='[Your-Desc]'

> [Your-Email]: 任意郵件氛赐,但是我比較推薦你使用github上的Email
> [Your-Name]: 推薦使用github上使用的Name
> [Your-Desc]: 一個簡單的描述魂爪,往往這個時候我們使用的是自己電腦的一個描述

// 比如我自己注冊了一個
$ pod trunk register wangcccong@foxmail.com 'ApterKing' --description='wangcong Mac Pro 13'

// 注冊完成后,你可以通過[pod trunk me]查看信息
$ pod trunk me

部署一個開源的pod

如果你是一個非git版本控制使用的開發(fā)者艰管,那么在你部署一個開源的library之前滓侍,我建議你看一看我的另一篇Git基礎(chǔ),這里只需要用到比較簡單的Git使用牲芋。

  • 在你的Github上創(chuàng)建一個repository
  • 將你的庫直接clone下來
$ git clone git@github.com:ApterKing/AKExtension.git
// 完成之后進(jìn)入到所在目錄
$ cd ../AKExtension
  • 創(chuàng)建.podspec
$ pod spec create [NAME]
> [NAME]: podspec 名稱撩笆,一般與你在git上創(chuàng)建的repository相同
// 如:
$ pod spec create AKExtension
  • 下面來將你的代碼或者資源添加到項目中
// 我一般會先創(chuàng)建一個文件夾,用于放置我的{.h/.m/.swift  Assets}等
$ mkdir Sources
// 將你所需的文件拷貝至文件夾缸浦,如下就是這個pod的
  • 接下來你需要將你的資源或者文件添加到git并提交
// 添加所有文件
$ git add .   
// 提交
$ git commit -m "Initial AKExtension"
// push到你的遠(yuǎn)程倉庫
$ git push
// 接下來就是需要使用到的一個Tag夕冲,這個在你的.podspec中需要配置
$ git tag -m "Initial Tag" 0.0.1
// 將tag添加至你的遠(yuǎn)程倉庫
$ git push --tags
  • 修改.podspec

下面就是我的.podspec,當(dāng)然你也可以根據(jù)之前生成的提示自己修改或者在github上搜索一個別人寫好的.podspec就行修改


  • 通過手動方式檢驗一下你的.podspec是否正確
// 進(jìn)入到.podspec所在目錄
$ pod spec lint
// 如果出現(xiàn)錯誤裂逐,需要修改到提示無誤后方可執(zhí)行下一步
  • 提交公有l(wèi)ibrary
$ pod trunk push [NAME].podspec
  • 現(xiàn)在就來看看是否成功
// 先更新一下repo
$ pod repo update
// 查找一下你提交的pod
$ pod search 'AKExtension'

tips: 如果你在pod search無法找到你的pod歹鱼,可以參照以下步驟:

  • 執(zhí)行 pod repo update 后重新pod search

或者:

  • pod setup 然后刪除 rm ~/Library/Caches/CocoaPods/search_index.json 再重新pod search

部署一個私有的pod

在上面一節(jié)你已經(jīng)了解了如何部署一個共有的pod了,但是往往大多數(shù)時候你是不能部署一個共有的pod卜高。比如你公司自己開發(fā)的基礎(chǔ)組件代碼弥姻、業(yè)務(wù)組件代碼等秩霍,這個時候你就需要一個private pod了,下面就來簡單說一說如何創(chuàng)建一個private pod蚁阳。我們還是依托于git铃绒,畢竟這個代碼以后需要與別人共同開發(fā)與維護(hù),當(dāng)然你也可以在自己的服務(wù)器上搭建螺捐,只要能夠保證你所在的Team能夠有訪問權(quán)限就可以了颠悬。

  • 重復(fù)上一章節(jié)的創(chuàng)建github repository,此時你只需要注意選擇private定血,因為在github上private需要付費赔癌,這里我就選用開源中國的git
  • 創(chuàng)建一個私有Repo
$ pod repo add REPO_NAME SOURCE_URL
> REPO_NAME: repo 名稱
> SOURCE_URL: 指向的地址
//如
$ pod repo add AKSwifty git@git.oschina.net:wangcccong/AKSwifty.git
  • 檢查是否操作成功
$ cd ~/.cocoapods/repos/AKSwifty
$ pod repo lint .
  • 創(chuàng)建并修改.podspec

相信你在上一章節(jié)已經(jīng)了解了如何通過命令來創(chuàng)建.podspec了,這里我們再次創(chuàng)建一個澜沟,但是我們需要讓它更有意義灾票,請?zhí)砑由夏闼接衦epo的名稱,我們首先在git.oschina.net 上創(chuàng)建一個私有倉庫茫虽,比如我們需要一個儀表盤(DashboardView)

創(chuàng)建好之后刊苍,按照上一章節(jié)的步驟,你需要將你的倉庫clone到本地濒析,添加需要的文件及資源等正什,設(shè)置tag,創(chuàng)建.podspec号杏,修改.podspec

  • 添加你的Podspec到私有repo
$ pod repo push AKSwifty AKSwifty+AKDashboardView.podspec
  • 私有倉庫的使用你應(yīng)該懂的婴氮,需要在Podfile添加source源
source 'https://github.com/CocoaPods/Specs'
source 'https://git.oschina.net/wangcccong/AKSwifty.git'  
platform :ios, "9.0"  
target "XXX" do  
    pod 'AKSwifty+AKDashboardView','~>0.0.1'  
end

關(guān)于cocoapod的介紹就到這里吧...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市盾致,隨后出現(xiàn)的幾起案子主经,更是在濱河造成了極大的恐慌,老刑警劉巖庭惜,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罩驻,死亡現(xiàn)場離奇詭異蜈块,居然都是意外死亡鉴腻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門百揭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雏胃,“玉大人固棚,你說我怎么就攤上這事厂汗≈云瑁” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵亮曹,是天一觀的道長式矫。 經(jīng)常有香客問我瞬痘,道長板熊,這世上最難降的妖魔是什么筒严? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮筋岛,結(jié)果婚禮上娶视,老公的妹妹穿的比我還像新娘。我一直安慰自己睁宰,他們只是感情好肪获,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柒傻,像睡著了一般孝赫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上红符,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天青柄,我揣著相機與錄音,去河邊找鬼预侯。 笑死致开,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的萎馅。 我是一名探鬼主播双戳,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼糜芳!你這毒婦竟也來了飒货?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤峭竣,失蹤者是張志新(化名)和其女友劉穎塘辅,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邪驮,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡莫辨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沮榜。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡盘榨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蟆融,到底是詐尸還是另有隱情草巡,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布型酥,位于F島的核電站山憨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏弥喉。R本人自食惡果不足惜郁竟,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望由境。 院中可真熱鬧棚亩,春花似錦、人聲如沸虏杰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纺阔。三九已至瘸彤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笛钝,已是汗流浹背质况。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留婆翔,地道東北人拯杠。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像啃奴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子雄妥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

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