iOS 組件化(一) - CocoaPods原理理論篇

iOS 組件化(一) - CocoaPods原理理論篇
iOS 組件化(二) - 遠程/本地管理私有庫
iOS 組件化(三) - 組件化工程介紹

本章節(jié)解決如下疑問
1.安裝CocoaPods后并拉取遠程的三方庫到本地,其三方庫會存儲在本地嗎
2.CocoaPods/Spec是什么
3.CocoaPods的底層原理

一、查看CocoaPods的目錄

$ open /Users/xxx/.cocoapods/repos  

找到CocoaPods本地Specs目錄(這里面的數(shù)據(jù)是從遠程CocoaPodsSpecs里拉取下來的,這個Specs就是CocoaPods下載完后,拉取三方庫很慢的原因)

本地Specs

隨意進入里面的文件夾,在一群打散文件夾里可以找到這些三方庫,版本號文件夾,里面只存儲了一個json文件

(如何定位到你想要找到的三方庫目錄呢?比如AFNetworking,取它的32位Hash值的前三位,就能找到AFNetworking的目錄)

這個json文件的內(nèi)容只存儲了該三方庫的信息而已。

{
  "name": "Holarchy",
  "version": "0.0.1",
  "summary": "A subclass of UIScrollView that provides painless building of forms etc.",
  "description": "\n        A subclass of UIScrollView that provides painless building of forms etc.\n",
  "homepage": "https://github.com/rimsan/Holarchy",
  "license": "MIT",
  "authors": {
    "Roman Petryshen": "roman@travelbird.com"
  },
  "source": {
    "git": "https://github.com/rimsan/Holarchy.git",
    "tag": "0.0.1"
  },
  "social_media_url": "https://twitter.com/RomanPetryshen",
  "platforms": {
    "ios": "8.0"
  },
  "requires_arc": true,
  "source_files": "Holarchy/*",
  "frameworks": "UIKit"
}

結(jié)論一:CocoaPods本地目錄只保存了三方庫的各個版本的json信息。
pod update先更新的是新版本三方庫的json信息,然后再拉取新版本的三方庫。

二、CocoaPods的底層原理

CocoaPods遠程倉庫的Specs
它存儲了很多很多的三方庫各個版本對應的庫的信息

CocoaPods本地存儲的Specs
它是通過輸入命令$ pod repo update從遠程倉庫的Specs拉取到本地(這是一個特別漫長的過程),于是乎我們本地的Specs就同步了遠程的Specs

常用的pod命令
$ pod search AFNetworkinng

查詢遠程倉庫Specs里的AFNetworkinng庫的版本記錄

$ pod install

1.若沒有指定庫的版本號,Profile聲明的三方庫找本地Specs里最新版本號,去git遠程倉庫拉取對應的三方庫。
2.若指定庫的版本號,則找本地Specs里三方庫對應的版本信息,去git遠程倉庫拉取對應的三方庫(若拉取不成功,則需要update操作)。

$ pod update

根據(jù)Profile聲明的三方庫,去更新本地Specs,然后拉取最新版本的三方庫。

$ pod repo update

本地Specs與遠程Specs進行同步操作。

CocoaPods的底層原理圖如下:

三、建立私倉理論

了解CocoaPods原理之后,我們就能夠通過其原理建立自己的組件私有倉庫。

1.創(chuàng)建自己的遠程私有倉庫

一般情況是在公司的服務器去配置git倉庫,我們可以選擇github、碼云等等。
創(chuàng)建一個遠程私有倉庫Spec,得到一個git鏈接。

將這個遠程私有倉庫Spec同步到本地/Users/xxx/.cocoapods/repos
(本地的repos目錄下master下文件,mastergit的遠程索引庫)

2.創(chuàng)建自己的組件工程

創(chuàng)建遠程組件工程的地址

通過pod命令可創(chuàng)建自己的組件工程,并寫好主要的代碼和把資源文件添加到工程。

修改工程里的.podSpec文件,與遠程創(chuàng)建遠程組件工程地址關(guān)聯(lián);
并且將本地組件工程與遠程組件工程地址關(guān)聯(lián)。

將工程里的xxx..podspec文件交由本地Specs倉庫管理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容