1. 程式人生 > >【iOS】元件化程序之建立元件(Git)倉庫

【iOS】元件化程序之建立元件(Git)倉庫

前言

    元件化開發已經在各個大小公司中普遍使用,尤其是一線大公司更是在忙不停的將原有專案中相對獨立功能抽取出來做成獨立元件。面試中也會經常問到元件化相關的知識, 在這裡我將通過一步步構建簡單的元件化專案來掌握這門技術。首先元件化的第一步就是需要將原有專案按照基礎層、業務層、表現層架構層次抽取相對獨立的功能模組出來做成相應的元件模組。元件模組則是由CocoaPods進行管理。對於一個企業專案,我們不太可能公開專案的程式碼,所以我們需要建立私有的CocoaPods倉庫。接下來我會一步步來按照建立遠端私有元件倉庫,建立一個測試元件,將元件加入到元件倉庫,以及專案中如何使用私有元件,這樣一個流程來完成元件化的第一步學習。

建立私有CocoaPods倉庫(元件倉庫)

    首先選擇一個基於Git開源的版本控制倉庫,由於GitHub需要付費才能建立私有倉庫,所以我選擇了“碼雲/Gitee”。這裡我們點選“新建專案”,專案名稱為“RKComponents”, 選擇語言“Objective-C”,選擇開源證書“MIT License”,是否公開選擇“私有”,點選“建立”,這樣我們的元件倉庫就建立好了。

建立私有元件Git倉庫

    和建立元件倉庫的流程一致,這裡我將名稱命名為“RKNetwork”,作為我的第一個元件。這裡建立完成之後我們點選複製,拷貝一下RKNetwork元件的Git倉庫地址,在接下來的配置元件的.podspec檔案中會用到。

建立私有的元件(podspec)

  1. 開啟終端,“cd workspace” 到工作目錄,使用“pod lib create RKNetwork” 建立元件模板。這個過程中會提示要求配置一些設定,按照專案的需求進行配置就可以了。建立完成後模板目錄如下:
  2. 修改RKNetwork.podspec配置檔案
  3. 檢驗.podspec檔案格式的正確性,cd 到RKNetwork.podspec同級目錄下,在終端輸入“pod lib lint”.


    驗證成功 ~~~~~

  4. 將本地的RKNetwork元件模板工程上傳到遠端Git倉庫:

    終端輸入“git remote add origin RKNetwork元件倉庫地址”,關聯遠端Git倉庫。

    第一次提交程式碼我們需要拉取一下遠端的程式碼合併到本地,終端輸入“git pull origin master --allow-unrelated-histories”。
    拉取了遠端程式碼後,會發現終端中提示合併程式碼衝突,主要是LICENSE和README.md這兩個檔案造成的。終端輸入“git mergetool”,開啟檔案對比工具可以檢視衝突部分的程式碼。這裡我不去對比了,直接開啟LICENSE和README.md這兩個檔案,將"<<<<<< HEAD" 到 “======”標識和這部分的程式碼刪除,刪除檔案最後的 “>>>>>> 2855********”的標識,儲存一下檔案。終端輸入:
    “git add .” 新增本地所有檔案
    “git commit -m 'RKNetwork commit'” 提交本地檔案修改
    “git push origin master” 將原生代碼上傳到遠端Git倉庫的master分支。

  5. 為剛剛提交的RKNetwork元件程式碼新增tag號,與.podspec檔案中配置的保持一致。終端輸入:
    “git tag -a 0.1.0 -m '新增tag標籤'”
    “git push --tags”


  6. 檢驗遠端.podspec檔案格式的正確性,終端輸入:“pod spec lint”

    驗證通過 ~~~~~

將元件新增到元件倉庫中

    首先進入到~/.cocopods/repos目錄下,改目錄為隱藏目錄,終端輸入:“default write com.apple.finder AppleShowFiles -bool true”,重啟電腦。

    進入到~/.cocopods/repos目錄下後,終端輸入:“pod repo add RKComponents”,新增一個RKComponents的資料夾,用於存放元件。
    終端輸入“pod repo push RKComponents RKNetwork.podspec檔案”, 將RKNetwork元件新增到RKComponents元件倉庫中。


到此我們就建立好了一個元件倉庫和一個元件,並將元件新增到元件倉庫中。

專案中使用私有元件

    首先我們搜尋一下是否能夠搜尋到我們的私有元件,終端輸入“pod search RKNetwork”.

    

    搜尋到了,那麼我們就可以使用了~~~~

    修改專案Podfile檔案,新增如下程式碼:

    

    終端輸入:“pod install”, 顯示“Installing RKNetwork (0.1.0)”, 就成功啦!