隨著專案功能的不斷增加,越來越多的開發人員加入,業務主線也隨之越來越多,造成耦合越來越嚴重,編譯越來越慢,測試不獨立等一系列問題。為了解決此類情況,我們可以考慮到使用元件化開發
-
概念 元件化就是將一個單一工程的專案, 分解成為各個獨立的元件, 然後按照某種方式, 任意組織成一個擁有完整業務邏輯的工程。
-
優勢
- 獨立:獨立編寫、編譯、執行、測試
- 重用:功能程式碼的重複使用。比如不同專案使用同一功能模組
- 高效:任意增刪模組,實現高效迭代
- 元件化還可以配合二進位制化, 提高專案編譯速度
-
元件分類 大體上分三類:基礎元件、功能元件和業務元件
- 基礎元件:也稱為公共元件,存放平時定義的巨集、常量、協議、分類、對必要的第三方的封裝類,以及各種處理工具類,如:時間、日期、裝置資訊、檔案處理、沙盒管理等
- 功能元件: 自定義檢視控制元件、一些特定功能的封裝(如錄音、播放音訊封裝)
- 業務元件:各種業務線
本篇先來介紹下遠端私有庫的基本使用,建議按順序看完之後,回來再看一遍步驟歸納,加深瞭解,如有不足之處,歡迎指出,感謝 : )
步驟歸納
-
建立遠端索引庫和私有庫
-
將遠端索引庫新增到本地
pod repo add 索引庫名稱 索引庫地址
-
在本地建立一個pod模板庫
pod lib create 元件名稱
將框架的核心程式碼新增到Classes目錄下 本地安裝測試核心程式碼是否可用pod install
修改Spec描述檔案 將修改好的模板庫上傳至遠端私有庫 -
上傳程式碼和打標籤
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
-
使用
source 官方索引庫url
source 私有索引庫url
pod '元件名稱'
pod install
接下來我們就來實戰如何建立和使用私有庫
一、建立私有索引庫
這裡以碼云為例,建立一個LXFSpecs的私有索引庫,這玩意的作用如其名,就是用來索引的
二、本地新增私有索引庫
1、檢視本地索引庫
pod repo
複製程式碼
如圖,目前本地僅有github上的那個公有索引庫
2、新增私有索引庫
將我們剛剛新建的私有索引庫LXFSpecs新增到本地
// pod repo add 索引庫名稱 索引庫地址
pod repo add LXFSpecs https://gitee.com/LinXunFeng/LXFSpecs.git
複製程式碼
現在本地就有兩個索引庫,好,索引庫的事情就先放一邊去了~
三、建立元件庫
碼雲上的建立操作同上,這裡以LXFBase為例,建立基礎元件庫
1、快速建立模版庫
到合適的位置建立一個與元件名相同的資料夾,cd進去後,使用如下命令
// pod lib create 元件名
pod lib create LXFBase
複製程式碼
這裡會讓你配置一些資訊,根據自己的情況自行配置即可。
2、新增元件內容
建立完成後會自動幫我們開啟相應的Example專案,LXFBase目錄中會出現如圖這些檔案,我們把基礎元件相關的東西丟到Classes資料夾中,並且把ReplaceMe.m
檔案刪除
預設Classes資料夾中存放的檔案就是pod install時要下載下來的檔案,當然可以通過修改spec檔案的配置來更改位置
3、安裝與測試本地庫
在Example專案的Podfile檔案中可以看到
pod 'LXFBase', :path => '../'
複製程式碼
模板庫已經預設幫我們在Podfile中指定了LXFBase.podspec的位置,使元件LXFBase可以正常安裝使用和方便測試
pod install
複製程式碼
可以看到我們已經將本地的元件新增進Example中了,現在可以盡情地做你想做的測試,確保元件的可用。
測試元件沒有問題後,我們接下來就要將podspec檔案上傳至私有索引庫,不過在此之前,需要對spec進行修改。
4、 修改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/**/*'
複製程式碼
四、上傳元件程式碼
1、將程式碼提交到元件倉庫
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
複製程式碼
2、打標籤
標籤0.1.0
與spec中的s.version
保持一致
git tag '0.1.0'
git push --tags
複製程式碼
五、提交podspec到私有索引庫
在上傳spec檔案前我們可以做一個驗證來節省時間,不然每次都推送很久結果還是驗證失敗,會氣死人的~
1、本地驗證Spec的必填欄位
// 本地驗證不會驗證 s.source 中的tag
pod lib lint
複製程式碼
2、遠端驗證
// 遠端驗證會驗證 s.source 中的tag,如果此時沒有打上相應的標籤則會報錯
pod spec lint
複製程式碼
如果你剛才沒有打標籤並上傳至遠端私有庫就來進行遠端驗證,肯定是會報錯的
在打完並上傳tag後再進行遠端驗證,就會驗證成功了,驗證成功後我們就可以進行下一步操作:提交podspec檔案到索引庫
- 驗證私有庫提示
如果驗證的是私有庫,則在後面加上
--private
,否則會有警告,你可以選擇--allow-warnings
來忽略該警告
pod lib lint --private
pod spec lint --private
複製程式碼
3、提交podspec
// pod repo push 私有索引庫名稱 spec名稱.podspec
pod repo push LXFSpecs LXFBase.podspec
複製程式碼
這裡的操作過程:先將我們的程式碼直接push到本地索引庫LXFSpecs,推送後會自動幫我們同步到遠端索引庫
再來看看碼雲上的私有索引庫LXFSpecs
來測試下搜尋我們的元件
pod search 'LXFBase'
複製程式碼
六、使用私有庫
這時我們可以來試試通過pod形式來新增元件LXFBase,建立一個新的專案
1、新增Podfile檔案
pod init
複製程式碼
2、在Podfile的最頂部新增如下描述
// 第二行是為了保證公有庫的正常使用
source 'https://gitee.com/LinXunFeng/LXFSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'
複製程式碼
3、新增使用元件LXFBase
pod 'LXFBase'
複製程式碼
4、安裝元件
pod install
複製程式碼