1. 程式人生 > >iOS 元件化開發(一):遠端私有庫的基本使用

iOS 元件化開發(一):遠端私有庫的基本使用

隨著專案功能的不斷增加,越來越多的開發人員加入,業務主線也隨之越來越多,造成耦合越來越嚴重,編譯越來越慢,測試不獨立等一系列問題。為了解決此類情況,我們可以考慮到使用元件化開發

  • 概念
    元件化就是將一個單一工程的專案, 分解成為各個獨立的元件, 然後按照某種方式, 任意組織成一個擁有完整業務邏輯的工程。

  • 優勢

    • 獨立:獨立編寫、編譯、執行、測試
    • 重用:功能程式碼的重複使用。比如不同專案使用同一功能模組
    • 高效:任意增刪模組,實現高效迭代
    • 元件化還可以配合二進位制化, 提高專案編譯速度
  • 元件分類
    大體上分三類:基礎元件、功能元件和業務元件

    • 基礎元件:也稱為公共元件,存放平時定義的巨集、常量、協議、分類、對必要的第三方的封裝類,以及各種處理工具類,如:時間、日期、裝置資訊、檔案處理、沙盒管理等
    • 功能元件: 自定義檢視控制元件、一些特定功能的封裝(如錄音、播放音訊封裝)
    • 業務元件:各種業務線

本篇先來介紹下遠端私有庫的基本使用,建議按順序看完之後,回來再看一遍步驟歸納,加深瞭解,如有不足之處,歡迎指出,感謝 : )

步驟歸納

  1. 建立遠端索引庫和私有庫

  2. 將遠端索引庫新增到本地 pod repo add 索引庫名稱 索引庫地址

  3. 在本地建立一個pod模板庫 pod lib create 元件名稱
    將框架的核心程式碼新增到Classes目錄下
    本地安裝測試核心程式碼是否可用 pod install
    修改Spec描述檔案
    將修改好的模板庫上傳至遠端私有庫

  4. 上傳程式碼和打標籤
    git init


    git add .
    git commit -m "提交描述"
    git remote add origin 遠端私有庫地址
    git push origin master
    git tag '0.1.0'
    git push --tags

  5. 提交spec至私有索引庫
    pod lib lint --private
    pod spec lint --private
    pod repo push 索引庫的本地名稱 xx.podspec

  6. 使用
    source 官方索引庫url
    source 私有索引庫url
    pod '元件名稱'
    pod install

接下來我們就來實戰如何建立和使用私有庫

一、建立私有索引庫

這裡以碼云為例,建立一個LXFSpecs的私有索引庫,這玩意的作用如其名,就是用來索引的

私有索引庫

LXFSpecs

二、本地新增私有索引庫

1、檢視本地索引庫

pod repo

檢視本地索引庫

如圖,目前本地僅有github上的那個公有索引庫

2、新增私有索引庫

將我們剛剛新建的私有索引庫LXFSpecs新增到本地

// pod repo add 索引庫名稱 索引庫地址
pod repo add LXFSpecs https://gitee.com/LinXunFeng/LXFSpecs.git

新增私有索引庫

現在本地就有兩個索引庫,好,索引庫的事情就先放一邊去了~

三、建立元件庫

碼雲上的建立操作同上,這裡以LXFBase為例,建立基礎元件庫

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

pod install

pod

可以看到我們已經將本地的元件新增進Example中了,現在可以盡情地做你想做的測試,確保元件的可用。

測試元件沒有問題後,我們接下來就要將podspec檔案上傳至私有索引庫,不過在此之前,需要對spec進行修改。

4、 修改Spec

podspec

主要的修改內容

  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

tag

標籤上傳成功

五、提交podspec到私有索引庫

在上傳spec檔案前我們可以做一個驗證來節省時間,不然每次都推送很久結果還是驗證失敗,會氣死人的~

1、本地驗證Spec的必填欄位

// 本地驗證不會驗證 s.source 中的tag
pod lib lint

pod lib lint

2、遠端驗證

// 遠端驗證會驗證 s.source 中的tag,如果此時沒有打上相應的標籤則會報錯
pod spec lint

如果你剛才沒有打標籤並上傳至遠端私有庫就來進行遠端驗證,肯定是會報錯的

tag Error

在打完並上傳tag後再進行遠端驗證,就會驗證成功了,驗證成功後我們就可以進行下一步操作:提交podspec檔案到索引庫

pod spec lint

  • 驗證私有庫提示
    如果驗證的是私有庫,則在後面加上--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

LXFBase.podspec

來測試下搜尋我們的元件

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

安裝成功

成功新增元件內容