深入理解Cocoapod——問答版本

本文是對瓜神的Cocoapos歷險記系列中問題的解答蝉稳,用來記錄學(xué)習過程~


1.0版本管理工具及 Ruby 工具鏈環(huán)境

  1. PM 是如何進行依賴庫的版本管理童谒?
    答:
  • PM 工具基本圍繞這個兩個文件來現(xiàn)實包管理:
  • 描述文件:聲明了項目中存在哪些依賴焚辅,版本限制;
  • 鎖存文件(Lock 文件):- 記錄了依賴包最后一次更新時的全版本列表刺下。
  1. Ruby 和 RVM/rbenv 之間的關(guān)系是什么?
  • RVM[11] 和 rbenv[12] 都是管理多個 Ruby 環(huán)境的工具,它們都能提供不同版本的 Ruby 環(huán)境管理和切換可帽。
  1. Gem、Bundler 和 CocaPods 之間的關(guān)系是什么窗怒?>答:
  • Gem:用ruby編寫的工具或依賴映跟;
  • Bundler[15] 是管理 Gem 依賴的工具,可以隔離不同項目中 Gem 的版本和依賴環(huán)境的差異扬虚,也是一個 Gem努隙。
  • CocoaPods 其實是 iOS 版的 RubyGems + Bundler 組合
  1. 如何通過 Bundler 來管理工程中的 Gem 環(huán)境?
    答:
  • 初始化Bundle環(huán)境辜昵,生成Gemfile文件荸镊,在文件列出gem列表和版本號

5.如何鎖死工程內(nèi)部的 CocoaPods 版本?
答:

  • 在 Gemfile 中聲明使用的 CocoaPods 版本并安裝

2.0 整體把握 CocoaPods 核心組件

  1. 簡單概述 CocoaPods 的核心模塊?答:
  • CLAide:命令解析器,如解析pod install躬存、pod update
  • cocoapods-core :用于 CocoaPods 中模板文件的解析收厨,包括 Podfile、.podspec优构,以及所有的 .lock 文件中特殊的 YAML 文件诵叁。
  • cocoapods-downloader:是用于下載源碼的小工具,它支持各種類型的版本管理工具钦椭,包括 HTTP / SVN / Git / Mercurial拧额。它可以提供 tags、commites彪腔,revisions侥锦,branches 以及 zips 文件的下載和解壓縮操作。
  • Molinillo:是 CocoaPods 對于依賴仲裁算法的封裝德挣,它是一個具有前向檢查的回溯算法恭垦。不僅在 Pods 中,Bundler 和 RubyGems 也是使用的這一套仲裁算法格嗅。
  • Xcodeproj :可通過 Ruby 來操作 Xcode 項目的創(chuàng)建和編輯等番挺。可友好的支持 Xcode 項目的腳本管理和 libraries 構(gòu)建屯掖,以及 Xcode 工作空間 (.xcworkspace) 和配置文件 .xcconfig 的管理。
  • cocoapods-plugins:插件管理功能粪摘,其中有 pod plugin 全套命令徘意,支持對于 CocoaPods 插件的列表一覽(list)轩褐、搜索(search)灾挨、創(chuàng)建(create)功能。
  1. pod 命令是如何找到并啟動 CocoaPods 程序的地技? > 答:
  • 通過/usr/local/bin/pod腳本文件莫矗,調(diào)用Gem.activate_bin_path 和 Gem.bin_path 用于找到 CocoaPods 的安裝目錄 cocoapods/bin作谚,最終加載該目錄下的 /pod 文件
  • 再通過 eval[8] 的手段調(diào)起我們需要的 CocoaPods 工程
  • 通過調(diào)用 Pod::Command.run(ARGV),實例化了一個 CLAide::Command 對象雀监,開始我們的 CLAide 命令解析階段
  1. 簡述 pod install 流程眨唬?> 答:
  • 環(huán)境準備
  • 解析依賴沖突
  • 下載依賴
  • 驗證target
  • 生成工程文件
  • 寫入依賴
  • 結(jié)束回調(diào)
  1. resolve_dependencies 階段中的 pre_download 是為了解決什么問題匾竿?> 答:
  • 主要是解決當我們在通過 Git 地址引入的 Pod 倉庫的情況下,系統(tǒng)無法從默認的 Source 拿到對應(yīng)的 Spec岭妖,需要直接訪問我們的 Git 地址下載倉庫的 zip 包,并取出對應(yīng)的 podspec 文件假夺,從而進行對比分析废离。
  1. validate_targets 都做了哪些校驗工作?> 答:
  • 驗證是否有重名的 framework
  • 驗證動態(tài)庫中是否有靜態(tài)鏈接庫。此時如果項目的 Podfile 設(shè)置了 use_framework! 以動態(tài)鏈接方式打包的時肖方,則會觸發(fā)該錯誤未状。
  • 確保 Swift Pod 的 Swift 版本正確配置且互相兼容的司草。
  • 檢測 Swift 庫的依賴庫是否支持了 module埋虹,這里的 module 主要是針對 Objective-C 庫而言搔课。
  • 檢測是否所有的 Pod Target 中版本一致性問題。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末崩瓤,一起剝皮案震驚了整個濱河市踩官,隨后出現(xiàn)的幾起案子蔗牡,更是在濱河造成了極大的恐慌颖系,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件集晚,死亡現(xiàn)場離奇詭異,居然都是意外死亡区匣,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門亏钩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姑丑,你說我怎么就攤上這事蛤签。” “怎么了栅哀?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長留拾。 經(jīng)常有香客問我痴柔,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任侈询,我火速辦了婚禮,結(jié)果婚禮上妄荔,老公的妹妹穿的比我還像新娘啦租。我一直安慰自己哗伯,他們只是感情好,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布篷角。 她就那樣靜靜地躺著焊刹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恳蹲。 梳的紋絲不亂的頭發(fā)上虐块,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音嘉蕾,去河邊找鬼贺奠。 笑死,一個胖子當著我的面吹牛错忱,可吹牛的內(nèi)容都是我干的儡率。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼以清,長吁一口氣:“原來是場噩夢啊……” “哼儿普!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掷倔,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤眉孩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后勒葱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浪汪,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年凛虽,在試婚紗的時候發(fā)現(xiàn)自己被綠了吟宦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡涩维,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出袁波,到底是詐尸還是另有隱情瓦阐,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布篷牌,位于F島的核電站睡蟋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏枷颊。R本人自食惡果不足惜戳杀,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一该面、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧信卡,春花似錦隔缀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至丢习,卻和暖如春牵触,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咐低。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工揽思, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人见擦。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓钉汗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锡宋。 傳聞我的和親對象是個殘疾皇子儡湾,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

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