組件化流程
準(zhǔn)備了解工作:
什么是組件化?適合什么樣的場景?組件化其實就是將我們的業(yè)務(wù)代碼或者一些基礎(chǔ)支撐代碼變成一個私有庫,通過 pod 來拉取代碼。這樣在項目中我可以隨意的加入或者刪除別人的代碼,也可以指定其他代碼的版本
比如我們在一般的開發(fā)中都會使用到AFNetworking,我們可以理解為我們的業(yè)務(wù)代碼就是以這種方式存在的,想用的時候就pod 進(jìn)來不想用就更改一下podfile 把這個庫拿掉,是不是很方便
組件化的好處在這里就不多做介紹,感興趣的同學(xué)自行查閱首先我們需要了解 pod 的工作原理是什么樣子的,這樣對我們后面的流程化操作會有更好的了解,下面我們先看一張圖
image.png
pod拉取代碼的原理:
- pod 有一個類似書本的目錄的一個倉庫,當(dāng)我們pod search 的時候它會在那個倉庫里取尋找,有沒有這個東西
- 跟pod search 一樣 當(dāng)我們pod install 的時候 它也會在那個目錄里去尋找這個庫,當(dāng)找到這個庫,通過他的git地址clone到我們本地倉庫,當(dāng)然,這里還有一些本地緩存的策略,這里也不多做介紹
組件化操作流程
Step 1
創(chuàng)建遠(yuǎn)程代碼倉庫
首先我們要在我們的私有g(shù)it服務(wù)器里創(chuàng)建一個遠(yuǎn)程倉庫,比如,我們用的是GitLab,那就打開,直接NewProjects,這時候遠(yuǎn)程是一個空的代碼倉庫叫 MyTestimage.png
Step 2
創(chuàng)建遠(yuǎn)程描述文件的倉庫(目錄)
還是NewProjects,這個名字我們可以叫做iOSPodSpecs,這里面存放的是我們的描述文件,目前也是空的
image.png
加入本地pod 搜索的索引(加搜索目錄)
我們先看一下我們本地的目錄都有啥pod repo listimage.png
我們可以看到,這里有兩個描述文件的索引倉庫(目錄),那我們在加一個,剛剛我們創(chuàng)建的那個iOSPodSpecs倉庫
pod repo add iOSSpecs http://192.168.10.81/iOSManager/iOSPodSpecs.git pod repo listimage.png
Step 3
克隆github 上的pod 示例
假如我要創(chuàng)建的組件叫做MyProject, 先創(chuàng)建一個pod 的示例pod lib create MyProject然后根據(jù)自己需求去選擇相應(yīng)的配置,最后生成一個工程
PS(可忽略)
當(dāng)然這個示例我們可以從github上拉下來,放在我們的私有g(shù)it 上,更改它的配置,就不用每一次都需選擇這些配置了。
https://github.com/CocoaPods/pod-template.git把這個template拉下來然后修改里面的配置文件,然后放到我們的遠(yuǎn)程倉庫里,在pod lib create 的時候后面放上我們私有庫示例的地址就可以里,這樣我們就不用一個一個去選擇了
Go On
image.png
最后生成這樣的東西
將上面生成的東西全部推送到遠(yuǎn)程倉庫
(1).把之前創(chuàng)建的遠(yuǎn)程空的倉庫 MyTest ,clone 到本地
(2).將MyProject下面的所有東西 拷貝進(jìn)去git clone http://192.168.10.81/iOSManager/MyTest.git MyTestimage.pngClasses里面就是我們要放代碼的地方
(3).修改描述文件,將本地的代碼push 到遠(yuǎn)程倉庫
我們打開workspace 在左邊的目錄中找到以.podspec的文件然后打開
image.png
下圖標(biāo)出的地方 就是我們需要 修改的東西
image.png
其中summary 和description 必須修改一下,內(nèi)容隨意,name 改成什么都可以,這幾個東西只跟pod search 有關(guān)
homepage 和source 修改成我們私有庫的地址和git 地址;比如說MyTest 的git地址是:http://192.168.10.81/iOSManager/MyTest.git;homepage 把git 去掉就可以了
修改之后
image.png修改完描述文件以后,我們就可以 push 到遠(yuǎn)程倉庫并且打一個tag 上去
git add . git commit -m 'init pod podspec' git pull git push git tag -a 0.0.1 -m desc git push origin --tags
注意這里的 s.version 的版本號 在你的遠(yuǎn)程倉庫一定要存在,要不然在后面驗證描述文件的時候,遠(yuǎn)程如果沒有那個tag,會不通過
Step 5
推送描述文件 到我們遠(yuǎn)程私有描述文件倉庫里(目錄)
cd 到本地倉庫里,里面對應(yīng)會有一個 .podspec 的文件這個就是描述文件
#這里是驗證你的描述文件格式是否正確,如果不正確是推不上去的 pod lib lint xxx.podspec --allow-warningsimage.png
這個意思就是你的描述文件是通過了驗證,下面就可以把描述文件推送到我們的目錄里了,其中 --allow-warnings 建議一直帶上,這個意思是忽略你工程中的一些警告,要不描述文件也是通過不了的pod repo push iOSSpecs XXX.podspec --allow-warningsimage.png
LOOK! 這樣描述文件就推送成功了,值得注意的是這里push 后面的名稱 是我們step2 的時候加的pod索引的名稱
FINAL
至此,我們所有的工作就都做完了,我們用 **pod search **搜索一下看能不能找到MyProject這個庫
pod search MyProjectimage.png
搜索到了,這樣你在其他的工程中直接通過pod 就可以拉到我的代碼
如果搜索不到就執(zhí)行一下面的命令再搜索
rm ~/Library/Caches/CocoaPods/search_index.json
PS
這里很多細(xì)節(jié)沒有說,比如描述文件的寫法,podspec 驗證命令的其他狀況,這些東西需要大家在實際的操作中自己摸索和總結(jié),在這里我就不多做闡述!












