天天看點

iOS架構--項目子產品化

随着項目的發展,代碼越來越複雜,管理起來也就越來越麻煩。尤其是在多人合作開發的項目中,代碼的維護也變得越來越艱難,随之而來的問題也就越來越多,如果此時進行代碼重構,把工作量是非常大的。
子產品化管理項目就是把目前項目分成多個子產品,單獨管理,這樣比起整個項目來說單獨的子產品管理更友善。對于一個成熟的項目要做子產品化還是很有挑戰的既要兼顧項目的開發任務還要去分離子產品,同時對于子產品的粒度劃分也是一個很複雜的問題,在這裡我建議嫌棄先劃分的粒度粗一點,等一期子產品化出來後在對各個子產品進行比較細的粒度劃分。對于子產品化的工具有很多,我選擇的是CocoaPods來實作木塊化管理。

1.首先在oschina上我建立了一個Repository 用來存放cocoapods的podspec檔案 
![這裡寫圖檔描述](https://img-blog.csdn.net/20171213171743309?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpZGl6aGlsZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

2.在本地建立repo并關聯到git上

pod repo add 倉庫名 git上的位址
           
3.接下來我們要建立私有庫了 也就是為我們要分離出來的子產品建立一個repo了 現在git上建立一個線上repo
![這裡寫圖檔描述](https://img-blog.csdn.net/20171213163613465?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpZGl6aGlsZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4.在本地建立木塊工程 在這我直接選擇用cocoapods建立了一個模闆工程
           
iOS架構--項目子產品化
5.編輯RDPodTest中的RDPodTest.podspec檔案
 ![這裡寫圖檔描述](https://img-blog.csdn.net/20171213164838868?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpZGl6aGlsZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

 6 驗證本地的的podspec檔案
           
pod lib lint RDPodTest.podspec
```![這裡寫圖檔描述](https://img-blog.csdn.net/20171213165300063?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpZGl6aGlsZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
由于是私有庫 是以外部無法通路git上的項目 是以有這個warn
執行 
pod lib lint RDPodTest.podspec --allow-warnings
如上圖說明此事podspec檔案通關驗證了

    7.關聯git上的repo和本地repo
    執行以下指令




<div class="se-preview-section-delimiter"></div>
           
git init
git remote add origin git位址
git remote add origin https://gitee.com/Richarl/RDPodTest.git
git add .
git commit -m 'init'
git push origin master
git tag '0.0.1' //關聯tag 要與podspec中為version一緻
git push --tags 
           
驗證遠端podspec 




<div class="se-preview-section-delimiter"></div>
           
pod spec lint RDPodTest.podspec --allow-warnings
           
如圖驗證通過

    把RDPodTest.podspec推到我們podspec的repo,步驟中我們建立的repo




<div class="se-preview-section-delimiter"></div>
           
pod repo push ProjectSpec RDPodTest.podspec
           
![如圖上傳成功](https://img-blog.csdn.net/20171213170501785?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpZGl6aGlsZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

    到~/.cocoapods/repos/ProjectSpec/下 檢視下工程目錄
    ![這裡寫圖檔描述](https://img-blog.csdn.net/20171213171107865?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpZGl6aGlsZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)


    9.接下來就是使用我們的私有庫了 在我們的主工程中的Podfile中添加 pod 'RDPodTest' 然後pod install 
    10.注意 主工程中的Podfile檔案中在最上面添加私有庫的位址個cocoapods公有位址





<div class="se-preview-section-delimiter"></div>
           

source ‘https://gitee.com/Richarl/ProjectSpec.git’

source ‘https://github.com/CocoaPods/Specs.git’

“`

iOS架構--項目子產品化

到此使用cocoapod實作子產品已經完畢

下一章 将會就子產品化之後實作頁面與頁面 元件與元件之間的解耦-調用-通信寫一下