iOS 組件化開發(fā)

[toc]

CocoaPods 是一個很好的三方開源庫管理工具,在配置和更新上為我們節(jié)省了大量的時間與降低了工作的繁瑣度。CocoaPods不僅可以對公有的Git倉庫進行分享開源(AFNetworking等),還可以對我們自己的私有Git倉庫進行管理。這里我們就利用CocoaPods來對我們私有的Git倉庫進行索引。

一 、基本概念

  1. Podspec : 該文件為你的代碼倉庫索引描述文件

    CocoaPods :通過該文件對你真正存儲代碼工程的 Git 倉庫進行索引與下載

    Project :你上傳到遠程Git倉庫的代碼工程,將來用于開源共享或則私有

  2. 索引流程


    索引流程

二 、原理

CocoaPod  通過第一個 Git 倉庫的里 .podspec 描述文件找到真正存儲你代碼的第二個 Git 倉庫,然后根據(jù) .podspec 里的相關(guān)字段對特定目錄下的代碼,三方依賴庫,資源文件等進行下載。

換一種說法來理解,第一個 Git 倉庫里的 .podspec 描述文件相當(dāng)于我們的指針, 其指向的另一個 Git 倉庫(內(nèi)存)才是你自己真正所共享的代碼。

三 、制作流程

  1. 創(chuàng)建兩個git倉庫,一個用于存儲 .podspec 后綴文件的私有 Git 倉庫(公開的public),一個用于存儲的共享代碼的私有 Git 倉庫(私有的private)。

  2. 本地創(chuàng)建后續(xù)要被共享的代碼項目

    • 打開終端工具,cd到你要創(chuàng)建的目錄下

    • 然后輸入 pod lib create XXX 命令創(chuàng)建一個待上傳的項目模板

      創(chuàng)建項目模板.jpg
    • 然后系統(tǒng)會要求你配置相關(guān)的設(shè)置,可以根據(jù)自己需求進行配置。


      配置相關(guān)參數(shù).jpg
  • 然后打開項目目錄,顯示如下: 后續(xù)添加的文件需要放到Classes文件夾下面,示例文件ReplaceMe.m可以刪除替換為自己的文件。

    需替換文件目錄.jpg
  • 接下來我們需要配置一下podspec ,打開Example文件夾下面的.xcworkspace文件,顯示如下:


    配置podspec文件.jpg
 配置 **.podspec** 后綴文件 
配置podspec文件注意事項.jpg
 ```
 s.name : 項目名

 s.version :  版本號(需跟代碼倉庫后面打 Tag 的值相等)

 s.homepage : 項目主頁(請注意,這里的地址跟git倉庫地址有一定差別)---------注意修改

 s.license : 開源協(xié)議

 s.source : Git 倉庫地址

 s.ios.deployment_target : 項目最低支持版本

 s.source_files : 具體去那個目錄下下載特定共享代碼               ---------注意修改

 s.frameworks : 項目所依賴的系統(tǒng)庫

 s.dependency : 項目所依賴的第三方庫
 ```
  • 配置完成之后,驗證一下 .podspec 文件格式的正確性

    在同一目錄下面,使用終端命令行工具輸入:pod lib lint 出現(xiàn)警告使用 pod lib lint --allow-warnings

驗證podspec文件的正確性.jpg
 出現(xiàn) passed validation 說明驗證成功。
驗證podspec文件成功.jpg
  • 將本地代碼工程與遠程私有倉庫關(guān)聯(lián)

    git remote add origin 遠程倉庫地址
    
關(guān)聯(lián)遠程代碼倉庫.jpg
  • 將本地倉庫內(nèi)容同步到遠程倉庫

    git add .
    git commit -m 'Something description'
    git push origin master
    
  • 同步到遠程之后,我們需要打一個 .podsepc 文件中s.version 版本 一致的 tag 分支

    (創(chuàng)建本地tag分支,提交遠程tag分支)

    git tag -a 0.1.0 -m '0.1.0版本'
    git push --tags
    
    打tag標(biāo)記.jpg
 當(dāng)你的tag 版本和podspec 文件里面的版本不一致的時候可以刪除tag 分支重新打一個新的tag分支

 (刪除本地tag分支,然后刪除對應(yīng)遠程tag分支,執(zhí)行上面的兩個命令)

 ```
 git tag -d 0.1.0              
 git push origin :refs/tags/0.1.0 
 ```
刪除遠端tag標(biāo)記.jpg
 然后進行本地和遠程驗證一下文件有效性:輸入命令 `pod spec lint `
驗證一下有效性.jpg
 驗證通過!!!
  • 至此Podfile中可以用 pod 'LFPodDemo', :git => 'http://git.longhu.net/lijunjie/LFPodDemo.git'方式正常使用 pod install,但是本地不能使用 pod search XXX 命令搜索到
使用方式一.jpg
  1. 要想使用 pod search XXX 需要我們項目組每個成員自己本地配置一下。 拉取項目代碼到本地然后關(guān)聯(lián)到遠程倉庫。上傳.podspec到第一個遠程私有倉庫

    • 首先進入 ~/.cocoapods/repos 目錄下

      cd ~/.cocoapods/repos

    • 然后創(chuàng)建一個私有倉庫目錄

      pod repo add LFPodPublicSpec spec遠端的git倉庫地址

      創(chuàng)建私有倉庫目錄.jpg
  • 然后向私有的 LFPodPublicSpec 遠程倉庫中提交 .podspec 文件

    pod repo push LFPodPublicSpec LFPodDemo.podspec

    向遠端私有spec文件倉庫提交podspec文件.jpg

 提交成功,然后看一下.cocoapods目錄下面的變化: 
本地cocoapods變化情況.jpg
 0.1.0版本出現(xiàn)了。然后我們使用 ` pod search LFPodDemo ` 命令搜索一下。 
能夠search到了.jpg
 成功了!!!!!!!
  1. 如何使用私有庫

    • 使用 pod 'LFPodDemo', :git => 'http://git.longhu.net/lijunjie/LFPodDemo.git'方式

      該方式不支持項目私有庫引用dependency

      使用方式一.jpg
  • 使用spec -- source 方式

    該方式支持項目私有庫引用dependency,但是需要創(chuàng)建許多spec的git倉庫用來搜索。

使用方式二-source.jpg
  1. 把不同的specs文件集中到一個git代碼倉庫的整合,類似于CocoaPods/Specs.git

    將不同的項目代碼下載到本地,然后在本地項目代碼路徑下面執(zhí)行下面代碼,在向私有的 LFPodPublicSpec 遠程倉庫中提交 .podspec 文件

    pod repo push LFPodPublicSpec LFXXX.podspec

一個podspecs倉庫關(guān)聯(lián)多個podspecs.jpg
本地cocoapod文件目錄結(jié)構(gòu).jpg

整合到一個PublickSpec文件夾下面了。nice!!!!

  1. 使用pod search LFPodDemo搜索一下
成功搜索到私有庫.jpg

成功了!!!!!!!

pod lib lint --verbose --sources='xxx,xxxxx' --allow-warnings --use-libraries --skip-import-validation

--sources 所需要的source源

--verbose log打印

--allow-warnings 允許存在警告

--use-libraries 使用libraries,解決一些報錯

--skip-import-validation 解決pods-App的一些報錯

四、參考鏈接

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

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