背景
隨著項(xiàng)目的越做越大,項(xiàng)目里面很多東西都在別的項(xiàng)目里面能進(jìn)行重復(fù)使用,這個(gè)時(shí)候我們可以使用CV的方式實(shí)現(xiàn)這種項(xiàng)目善玫,但是這樣存在一個(gè)在一個(gè)地方修改了復(fù)用代碼歌殃,其他地方不能及時(shí)性的修改衡蚂,針對這種情況我們就可以使用cocopod私有庫的方式把能夠復(fù)用的代碼進(jìn)行抽離出來,封裝成對應(yīng)的組件仪媒。
建立私有Repo
- 通過
pod repo
查看現(xiàn)在pod的倉庫,一般情況我們本地只有一個(gè)master姜钳,然后我們需要手動的給repo添加自己的私有倉庫。
repo
-
在git服務(wù)器上面初始化一個(gè)git倉庫领迈。這里的git服務(wù)器可以是外網(wǎng)的彻磁,也可以是公司內(nèi)部自建的git服務(wù)器,我這里使用的是coding.net上面建立的私有庫。
git倉庫 - 通過
pod repo add 名字 git地址
添加私有repo狸捅。
添加私有庫 - 到此私有repo已經(jīng)添加完成衷蜓。
創(chuàng)建自己待傳的組件
-
把自己抽離出來的代碼存放到指定文件夾里面,并建立對應(yīng)代碼的測試demo尘喝。
存放代碼的文件夾 - 通過
pod spec create 組件名字 組件的git地址
創(chuàng)建組件的spec文件磁浇,并根據(jù)實(shí)際需求修改spec文件里面的內(nèi)容。對應(yīng)參考資料
Pod::Spec.new do |s|
#指定平臺和版本
s.platform = :ios, '8.0'
#名字
s.name = "CountDownButton"
#對應(yīng)版本
s.version = "0.0.2"
#簡短描述
s.summary = "CountDownButton"
#詳細(xì)描述
s.description = "一個(gè)倒計(jì)時(shí)的button,這是很長的描述"
#代碼介紹的主頁
s.homepage = "https://coding.net/u/samhzx/p/MyRepo"
#開源協(xié)議
s.license = 'Code is MIT, then custom font licenses.'
#作者
s.author = { "xxxxx" => "xxxx@qq.com" }
#代碼的git倉庫
s.source = { :git => "https://git.coding.net/samhzx/CountDownButton.git", :tag => "#{s.version}" }
#代碼引用的文件
s.source_files = "CountDownButton/**/*.{h,m}"
s.requires_arc = true
end
- 修改完spec文件之后使用
pod spec lint spec文件
驗(yàn)證文件是否正確朽褪。如果出現(xiàn)錯誤根據(jù)錯誤提示進(jìn)行相應(yīng)的修改之后再次進(jìn)行驗(yàn)證置吓。注意:spec文件里面的version的值一定要和git倉庫對應(yīng)的tag一致。
驗(yàn)證spec文件 - 初始化對應(yīng)組件的git倉庫缔赠、上傳組件代碼到git倉庫衍锚、標(biāo)記git倉庫的tag值。
- 初始化本地組件git倉庫使用
git init
橡淑。 - 關(guān)聯(lián)遠(yuǎn)程git倉庫使用
git remote add origin git倉庫地址
构拳。 - 把本地代碼添加到git倉庫使用
git add .
。 - 提交本地代碼使用
git commit -m '提交信息'
。 - 提交到遠(yuǎn)程倉庫第一次使用
git push origin master
置森;后面使用的時(shí)候git push
斗埂。 - 給代碼打上tag使用
git tag -a 版本號 -m '版本的描述信息'
。 - 使用
git push --tags
把本地所有tag上傳到git服務(wù)器;也可以使用'git push origin 版本號'上傳指定的tag凫海。 - 使用
git tag -d 版本號
刪除本地對應(yīng)的tag呛凶;接著使用git push origin :版本號
同步本地刪除的tag到服務(wù)器。
- 初始化本地組件git倉庫使用
- 使用
pod repo push 私有repo名稱 spec文件
向自己的私有庫上傳對應(yīng)的spec文件行贪。
上傳spec文件 - 到此組件上傳到私有repo已經(jīng)完成漾稀。
使用私有repo
- demo的Podfile文件:
source 'https://github.com/CocoaPods/Specs.git'
#私有Spec Repo
#source 'https://git.coding.net/samhzx/MyRepo.git'
platform :ios, '9.0'
target 'CountDownButtonDemo' do
use_frameworks!
#pod 'CountDownButton', :podspec => '../CountDownButton.podspec'
pod 'CountDownButton', :path => '../'
end
- 正常使用的Podfile文件:
source 'https://github.com/CocoaPods/Specs.git'
#私有Spec Repo
source 'https://git.coding.net/samhzx/MyRepo.git'
platform :ios, '9.0'
target 'CountDownButtonDemo' do
use_frameworks!
pod 'CountDownButton'
end
- 使用
pod install
進(jìn)行安裝,正常情況能安裝上私有repo里面的對應(yīng)組件建瘫,如果不行就使用pod repo update 私有repo名字
更新一下對應(yīng)的私有repo崭捍。 - 私有組件的大概使用到此完成。
結(jié)語
項(xiàng)目中使用組件化不光是組件的管理啰脚,還涉及到組件的抽象殷蛇,組件的分類,組件的組織等多方面的技術(shù)橄浓,需要了解的東西也較多粒梦,今天給大家?guī)淼闹皇墙M件管理的一個(gè)簡單介紹,后面有時(shí)間繼續(xù)給大家分享組件開發(fā)的其他東西荸实,在此謝謝大家哦匀们。