隨着項目功能的不斷增長,愈來愈多的開發人員加入,業務主線也隨之愈來愈多,形成耦合愈來愈嚴重,編譯愈來愈慢,測試不獨立等一系列問題。爲了解決此類狀況,咱們能夠考慮到使用組件化開發git
概念 組件化就是將一個單一工程的項目, 分解成爲各個獨立的組件, 而後按照某種方式, 任意組織成一個擁有完整業務邏輯的工程。github
優點bash
組件分類 大致上分三類:基礎組件、功能組件和業務組件微信
本篇先來介紹下遠程私有庫的基本使用,建議按順序看完以後,回來再看一遍步驟概括,加深瞭解,若有不足之處,歡迎指出,感謝 : )框架
建立遠程索引庫和私有庫工具
將遠程索引庫添加到本地 pod repo add 索引庫名稱 索引庫地址
組件化
在本地建立一個pod模板庫 pod lib create 組件名稱
將框架的核心代碼添加到Classes目錄下 本地安裝測試核心代碼是否可用 pod install
修改Spec描述文件 將修改好的模板庫上傳至遠程私有庫post
上傳代碼和打標籤
git init
git add .
git commit -m "提交描述"
git remote add origin 遠程私有庫地址
git push origin master
git tag '0.1.0'
git push --tags
測試
提交spec至私有索引庫
pod lib lint --private
pod spec lint --private
pod repo push 索引庫的本地名稱 xx.podspec
ui
使用
source 官方索引庫url
source 私有索引庫url
pod '組件名稱'
pod install
接下來咱們就來實戰如何建立和使用私有庫
這裏以碼云爲例,建立一個LXFSpecs的私有索引庫,這玩意的做用如其名,就是用來索引的
pod repo
複製代碼
如圖,目前本地僅有github上的那個公有索引庫
將咱們剛剛新建的私有索引庫LXFSpecs添加到本地
// pod repo add 索引庫名稱 索引庫地址
pod repo add LXFSpecs https://gitee.com/LinXunFeng/LXFSpecs.git
複製代碼
如今本地就有兩個索引庫,好,索引庫的事情就先放一邊去了~
碼雲上的建立操做同上,這裏以LXFBase爲例,建立基礎組件庫
到合適的位置建立一個與組件名相同的文件夾,cd進去後,使用以下命令
// pod lib create 組件名
pod lib create LXFBase
複製代碼
這裏會讓你配置一些信息,根據本身的狀況自行配置便可。
建立完成後會自動幫咱們打開相應的Example項目,LXFBase目錄中會出現如圖這些文件,咱們把基礎組件相關的東西丟到Classes文件夾中,而且把ReplaceMe.m
文件刪除
默認Classes文件夾中存放的文件就是pod install時要下載下來的文件,固然能夠經過修改spec文件的配置來更改位置
在Example項目的Podfile文件中能夠看到
pod 'LXFBase', :path => '../'
複製代碼
模板庫已經默認幫咱們在Podfile中指定了LXFBase.podspec的位置,使組件LXFBase能夠正常安裝使用和方便測試
pod install
複製代碼
能夠看到咱們已經將本地的組件添加進Example中了,如今能夠盡情地作你想作的測試,確保組件的可用。
測試組件沒有問題後,咱們接下來就要將podspec文件上傳至私有索引庫,不過在此以前,須要對spec進行修改。
具體的配置說明能夠參考Cocoapods 建立第三方框架
主要的修改內容
s.name = 'LXFBase'
s.version = '0.1.0'
s.summary = 'LXFBase.'
s.description = <<-DESC
LXFBase是基礎組件庫,包括分類和經常使用工具
DESC
s.homepage = 'https://gitee.com/LinXunFeng/LXFBase'
s.source = { :git => 'https://gitee.com/LinXunFeng/LXFBase.git', :tag => s.version.to_s }
s.source_files = 'LXFBase/Classes/**/*'
複製代碼
git add .
git commit -m 'firstCommit'
git remote add origin https://gitee.com/LinXunFeng/LXFBase.git
// 第一次push若是報錯的話能夠加上-f
// git push -f origin master
git push origin master
複製代碼
標籤0.1.0
與spec中的s.version
保持一致
git tag '0.1.0'
git push --tags
複製代碼
在上傳spec文件前咱們能夠作一個驗證來節省時間,否則每次都推送好久結果仍是驗證失敗,會氣死人的~
// 本地驗證不會驗證 s.source 中的tag
pod lib lint
複製代碼
// 遠程驗證會驗證 s.source 中的tag,若是此時沒有打上相應的標籤則會報錯
pod spec lint
複製代碼
若是你剛纔沒有打標籤並上傳至遠程私有庫就來進行遠程驗證,確定是會報錯的
在打完並上傳tag後再進行遠程驗證,就會驗證成功了,驗證成功後咱們就能夠進行下一步操做:提交podspec文件到索引庫
--private
,不然會有警告,你能夠選擇--allow-warnings
來忽略該警告pod lib lint --private
pod spec lint --private
複製代碼
// pod repo push 私有索引庫名稱 spec名稱.podspec
pod repo push LXFSpecs LXFBase.podspec
複製代碼
這裏的操做過程:先將咱們的代碼直接push到本地索引庫LXFSpecs,推送後會自動幫咱們同步到遠程索引庫
再來看看碼雲上的私有索引庫LXFSpecs
來測試下搜索咱們的組件
pod search 'LXFBase'
複製代碼
這時咱們能夠來試試經過pod形式來添加組件LXFBase,建立一個新的項目
pod init
複製代碼
// 第二行是爲了保證公有庫的正常使用
source 'https://gitee.com/LinXunFeng/LXFSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'
複製代碼
pod 'LXFBase'
複製代碼
pod install
複製代碼