iOS組件化干貨系列(一)---如何創(chuàng)建一個組件

組件化流程

準(zhǔn)備了解工作:

  1. 什么是組件化?適合什么樣的場景?組件化其實就是將我們的業(yè)務(wù)代碼或者一些基礎(chǔ)支撐代碼變成一個私有庫,通過 pod 來拉取代碼。這樣在項目中我可以隨意的加入或者刪除別人的代碼,也可以指定其他代碼的版本
    比如我們在一般的開發(fā)中都會使用到AFNetworking,我們可以理解為我們的業(yè)務(wù)代碼就是以這種方式存在的,想用的時候就pod 進(jìn)來不想用就更改一下podfile 把這個庫拿掉,是不是很方便
    組件化的好處在這里就不多做介紹,感興趣的同學(xué)自行查閱

  2. 首先我們需要了解 pod 的工作原理是什么樣子的,這樣對我們后面的流程化操作會有更好的了解,下面我們先看一張圖


    image.png
pod拉取代碼的原理:
  1. pod 有一個類似書本的目錄的一個倉庫,當(dāng)我們pod search 的時候它會在那個倉庫里取尋找,有沒有這個東西
  2. 跟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)程是一個空的代碼倉庫叫 MyTest

image.png
Step 2

創(chuàng)建遠(yuǎn)程描述文件的倉庫(目錄)
還是NewProjects,這個名字我們可以叫做iOSPodSpecs,這里面存放的是我們的描述文件,目前也是空的

image.png

加入本地pod 搜索的索引(加搜索目錄)
我們先看一下我們本地的目錄都有啥

pod repo list
image.png

我們可以看到,這里有兩個描述文件的索引倉庫(目錄),那我們在加一個,剛剛我們創(chuàng)建的那個iOSPodSpecs倉庫

pod repo add iOSSpecs http://192.168.10.81/iOSManager/iOSPodSpecs.git
pod repo list
image.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 MyTest
image.png

Classes里面就是我們要放代碼的地方

(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-warnings

image.png

這個意思就是你的描述文件是通過了驗證,下面就可以把描述文件推送到我們的目錄里了,其中 --allow-warnings 建議一直帶上,這個意思是忽略你工程中的一些警告,要不描述文件也是通過不了的

pod repo push iOSSpecs XXX.podspec --allow-warnings
image.png

LOOK! 這樣描述文件就推送成功了,值得注意的是這里push 后面的名稱 是我們step2 的時候加的pod索引的名稱

FINAL
至此,我們所有的工作就都做完了,我們用 **pod search **搜索一下看能不能找到MyProject這個庫
pod search MyProject
image.png

搜索到了,這樣你在其他的工程中直接通過pod 就可以拉到我的代碼
如果搜索不到就執(zhí)行一下面的命令再搜索

rm ~/Library/Caches/CocoaPods/search_index.json

PS

這里很多細(xì)節(jié)沒有說,比如描述文件的寫法,podspec 驗證命令的其他狀況,這些東西需要大家在實際的操作中自己摸索和總結(jié),在這里我就不多做闡述!

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

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

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