前言
項目達到一定規(guī)模后都會經(jīng)歷重構(gòu)荤牍,一般常用都會采用組件化也叫模塊化稀蟋。我所知道的組件化有兩種方式:
- 本地一個工程包含多個組件工程的多工程組件化
- 本地一個工程配合cocoapods管理遠程組件的方式
(本文說的就是這種遠程組件庫吁峻,具體步驟如下)
1、創(chuàng)建組件demo工程
(先終端cd到指定路徑现喳,下面創(chuàng)建的工程會直接到當前路徑吟税。)
終端中輸入pod lib create 組件名(如果出現(xiàn)錯誤應(yīng)該是網(wǎng)絡(luò)問題多試幾次)
并依次回答以下問題
>What is your name?
>這里輸入名字,可以隨便輸
>What is your email?
>這里最好是輸入你gitee或者github注冊的郵箱
>What platform do you want to use?? [ iOS / macOS ]
>iOS
>What language do you want to use?? [ Swift / ObjC ]
>ObjC
>Would you like to include a demo application with your library? [ Yes / No ]
>Yes
>Which testing frameworks will you use? [ Specta / Kiwi / None ]
>None
>Would you like to do view based testing? [ Yes / No ]
>No
2稀轨、把需要組件化的源碼放進工程
第一步得到完整工程后扼脐,找到Classes目錄
把需要組件化的文件拖進此目錄并刪除ReplaceMe.m文件
然后cd 到Example目錄下執(zhí)行pod install。就能看到放入在Classes目錄下的文件
3奋刽、打開Example工程瓦侮,修改podspec文件
s.version 框架版本號
s.summary 框架簡述(不改動不讓過)
s.homepage 個人主頁
s.source 遠程庫地址
s.dependency 依賴第三方庫等等
4、和遠端倉庫關(guān)聯(lián)
git init
git add .
git commit -m "my tool component"
git remote add origin https://github.com/tyjlp/SLKToolComponent.git
git push -u origin master
git tag 0.1.0(這個版本號和s.version要一致)
git push --tags
5佣谐、校驗組件化肚吏,上傳cocoapod
電腦未注冊trunk的話要先注冊trunk
使用 pod trunk me 查詢是否注冊
未注冊則要先注冊,使用 pod trunk register 郵箱 '用戶名' --description='電腦描述'
注冊成功后狭魂,以下兩步驗證最后一步提交
pod lib lint 驗證.podspec文件是否可用(避免警告pod lib lint --allow-warnings)
pod spec lint 驗證遠程倉庫(避免警告pod spec lint --allow-warnings)
提交.podspec文件到倉庫
pod trunk push 組件podspec文件名.podspec (上面加了此處也要加 --allow-warnings)
發(fā)布成功后罚攀,其他項目pod repo update后pod install或者pod update獲取最新庫
這里是華麗的分割線
以上是公開單個組件的發(fā)布党觅,也就是直接發(fā)布到GitHub或者Gitee上面,大家都能看到
以下多個組件統(tǒng)一管理斋泄,可以設(shè)置私有
一般公司項目肯定不止一個組件杯瞻,所以需要一個管理所有組件的方式
1、創(chuàng)建新的倉庫用來管理所有的私有庫spec文件
pod repo add [Private Repo Name] [GitHub HTTPS clone URL]
[Private Repo Name] 是你本地需要用來管理私有庫的spec名稱
[GitHub HTTPS clone URL]是你新建的這個管理私有庫的倉庫地址
例如:
pod repo add Spec https://gitee.com/test/123.git
2炫掐、上傳組件至遠程倉庫和上面流程一樣(創(chuàng)建GitHub repository時選擇私有)
發(fā)布的時候選擇對應(yīng)的管理庫名
pod repo push [管理庫的名稱] [當前組件庫名稱].podspec --allow-warnings
例如:
pod repo push Specs Test.podspec --allow-warnings
3魁莉、在使用"pod install"的時候會出現(xiàn)下面這種錯誤
[!] Unable to find a specification for ‘’
說明是沒有找到對應(yīng)的庫,因為默認是去GitHub上面去找的募胃,但是我們現(xiàn)在這里的庫是放在碼云gitee上面的旗唁,如果需要讓他去碼云gitee上面去搜索我們的私有庫,就需要在podfile文件內(nèi)容最上面配置資源庫地址摔认。
source 'https://gitee.com/xxxx/xxxx.git'
source 'https://github.com/CocoaPods/Specs.git'
這里為什么寫上了自己的私有庫地址之后還得加上cocoapods原有的庫地址呢逆皮?
因為如果加上了自己的資源地址之后宅粥,就只會在你添加的資源地址里面去尋找資源参袱,但是我們項目開發(fā)中除了使用自己的私有庫之外,經(jīng)常還要使用到GitHub上面的公開庫資源秽梅,所以要配上Github公開庫資源地址抹蚀。另外,如果我們有需要其他小伙伴的私有庫資源企垦,就需要再加上其他小伙伴們的資源地址