Cocoapods模塊化開發(fā)組件化管理

利用CocoaPods集成的優(yōu)勢(shì),管理代碼塊,組件,實(shí)現(xiàn)模塊化開發(fā)。實(shí)現(xiàn)的效果是把封裝起來(lái)的常用的功能或者組件,放到pod里面去管理,其他人也可以用pod快速集成

代碼模塊化的目的:

  • 易于管理代碼
  • 方便集成使用代碼塊進(jìn)行快速開發(fā),相比直接復(fù)制到多個(gè)項(xiàng)目,優(yōu)勢(shì)比較明顯
  • 更新pod里面的內(nèi)容,那么其他使用到的地方可以實(shí)現(xiàn)同步更新
  • 可以隨意的組裝代碼塊,實(shí)現(xiàn)不同的功能

制作步驟:

  1. 安裝cocoapods
  2. github創(chuàng)建代碼倉(cāng)庫(kù)
  3. 制作本地庫(kù)(創(chuàng)建和配置podspec文件)
  4. 驗(yàn)證
  5. 創(chuàng)建字庫(kù)Subspec

一、安裝cocoapods

不做過(guò)多的介紹

二、github創(chuàng)建代碼倉(cāng)庫(kù)

1.先創(chuàng)建一個(gè)遠(yuǎn)程的spec索引倉(cāng)庫(kù)
image.png

image.png
2.將私有的遠(yuǎn)程索引倉(cāng)庫(kù)copy到本地

使用命令:

pod repo add HJSpec(本地倉(cāng)庫(kù)名稱) + 剛剛創(chuàng)建的遠(yuǎn)程索引庫(kù)地址

可以使用 pod repo 命令 查看是否copy成功

HJSpec
- Type: git (main)
- URL:  https://github.com/948769029/HJSpec.git
- Path: /Users/admin/.cocoapods/repos/HJSpec

trunk
- Type: CDN
- URL:  https://cdn.cocoapods.org/
- Path: /Users/admin/.cocoapods/repos/trunk

至此,私有遠(yuǎn)程索引倉(cāng)庫(kù)HJSpec生產(chǎn)完成

三、 制作本地庫(kù)(創(chuàng)建和配置podspec文件)

同創(chuàng)建遠(yuǎn)程索引庫(kù)一樣,但是要注意不要勾選README file 因?yàn)橐粫?huì)我們?cè)谏蟼髂0宓臅r(shí)候 有自動(dòng)生成 下面的幾個(gè)選項(xiàng)都不選


image.png
3.1創(chuàng)建私有的pod組件庫(kù)

cd 到要存放的對(duì)應(yīng)的文件夾路徑 執(zhí)行以下命令

pod lib create HJSwiftExtension
image.png

問(wèn)題的意思就是這樣:

1.你想要使用哪個(gè)平臺(tái)?[iOS / macOs]
2.你想要使用哪種語(yǔ)言?[Swift / ObjC]
3.你的庫(kù)中是否包含一個(gè)示例程序?[Yes / No]
4.你想要使用哪個(gè)測(cè)試框架?[Specta/ Kiwi / None]
5.你想要View基礎(chǔ)測(cè)試?[Yes / No]

pod組件空模板創(chuàng)建成功后,會(huì)自動(dòng)打開工程.

3.2刪除ReplaceMe文件,同時(shí)將你封裝好的文件,放到class文件夾里面
image.png
3.2.1 切換到Example下進(jìn)行pod install (把剛才拖入到class里的文件夾pod進(jìn)來(lái))
image.png
3.3 編輯.podspec 文件
image.png

對(duì)應(yīng)字段說(shuō)明:

name:框架名
version:當(dāng)前版本(注意,是當(dāng)前版本,假如你后續(xù)更新了新版本,需要修改此處)
summary:簡(jiǎn)要描述,在pod search HJSwiftExtension的時(shí)候會(huì)顯示該信息。
description:詳細(xì)描述
homepage:頁(yè)面鏈接
license:開源協(xié)議
author:作者
source:源碼git地址
platform:支持最低iOS版本
source_files:源文件(可以包含.h和.m)
public_header_files:頭文件(.h文件)
resources:資源文件(配置的文件都會(huì)被放到mainBundle中)
resource_bundles:資源文件(配置的文件會(huì)放到你自己指定的bundle中)
frameworks:依賴的系統(tǒng)框架
vendored_frameworks:依賴的非系統(tǒng)框架
libraries:依賴的系統(tǒng)庫(kù)
vendored_libraries:依賴的非系統(tǒng)的靜態(tài)庫(kù)
dependency:依賴的三方庫(kù)

主要修改一下版本號(hào),核對(duì)一下路徑是否正確,然后保存!

source來(lái)源 一定要填寫正確 可以打開

3.4 校驗(yàn)本地索引文件

cd 到 HJSwiftExtension.podspec 所在的文件夾,執(zhí)行以下命令

pod lib lint --allow-warnings
image.png

pod lib lint 命令表示在本地校驗(yàn)索引文件
pod spec lint 表示在本地和遠(yuǎn)程都校驗(yàn)索引文件
pod lib lint參數(shù)解析:
--sources:需要引?的spec,默認(rèn)只依賴master,如果當(dāng)前pod依賴了私有庫(kù),需要將其對(duì)應(yīng)的spec包含進(jìn)來(lái),不然會(huì)報(bào)找不到對(duì)應(yīng)庫(kù)的問(wèn)題。參數(shù)可以是本地spec的名稱,也可以是git地址。
--allow-warnings:允許警告檢測(cè)通過(guò)。
--verbose:打印詳細(xì)的檢驗(yàn)過(guò)程
--use-libraries:?程或者依賴??了靜態(tài)庫(kù)(*.a?件)或者是framework

3.5 把本地組件代碼推到遠(yuǎn)端,并打個(gè)標(biāo)簽
git add .
git commit -m '第一次提交'
git remote add origin 組件代碼庫(kù)地址
git push origin master
//注意tag和podspec文件里的s.version一樣
git tag "0.1.0"
git push —-tags

注意:如果提交報(bào)錯(cuò)


image.png

請(qǐng)打開這個(gè)鏈接https://blog.csdn.net/weixin_41010198/article/details/119698015

推送成功后,到組件庫(kù)git上查看,代碼是否已經(jīng)上傳

3.6 接下來(lái)可以驗(yàn)證podspec索引文件是否正確

首先,通過(guò)

pod lib lint HJSwiftExtension.podspec --verbose --allow-warnings

驗(yàn)證本地索引文件是否正確
也可以略過(guò)本地驗(yàn)證
直接通過(guò)

pod spec lint --verbose --allow-warnings 

命令驗(yàn)證podspec索引文件(既驗(yàn)證本地同時(shí)驗(yàn)證遠(yuǎn)程的podspec)

如果檢驗(yàn)通過(guò) 同樣會(huì)出現(xiàn) passed validation

3.7 將HJSwiftExtension.podspec索引文件到我們最早創(chuàng)建的私有遠(yuǎn)程索引庫(kù) HJSwiftExtension.podspec 命令如下:

執(zhí)行命令前,要cd 到當(dāng)前組件庫(kù)的文件下
格式:pod repo push <本地索引庫(kù)> <索引文件名> - -verbose - -allow-warnings

pod repo push HJSpec HJSwiftExtension.podspec --verbose --allow-warnings

四、驗(yàn)證

4.1 查看本地索引倉(cāng)庫(kù)是否引入成功
image.png
4.2 新建項(xiàng)目,Podfile 引入剛才封裝好的庫(kù)
image.png
4.3 pod install 查看是否安裝成功
image.png

五、創(chuàng)建子庫(kù)Subspec

設(shè)置子庫(kù)的作用

在開發(fā)中,有時(shí)候我們僅僅需要用到一個(gè)庫(kù)里面的部分功能,而其他的一些功能我們不需要使用,那么我們就應(yīng)該設(shè)置子庫(kù)來(lái)實(shí)現(xiàn)選擇性引入

子庫(kù)格式
s.subspec '子庫(kù)名稱' do |別名|
別名.source_files = '本地索引庫(kù)名稱/class/文件夾名稱/*.{h,m}'  
設(shè)置子庫(kù)
    1. 我們?cè)趧偛艅?chuàng)建好的本地私有庫(kù),class 文件里面添加一個(gè)新的文件夾testView,包含一些封裝好的功能


      image.png
    1. 修改HJSwiftExtension.podspec文件
      注意點(diǎn):
      1、修改版本號(hào)
      2、設(shè)置子庫(kù)語(yǔ)法
      修改如下圖所示:


    1. 安裝一下子庫(kù),cd到Example文件路徑
pod install
    1. 檢驗(yàn)本地文件是否符合推送規(guī)則
pod lib lint --allow-warnings
    1. 提交代碼并打tag
    git add .
    git commit -m '第二次提交'
    git push origin master
    //注意tag和podspec文件里的s.version一樣
    git tag "1.0.2"
    git push —-tags
    1. pod repo push <本地遠(yuǎn)程索引庫(kù)名稱> <本地索引文件名> - -verbose - -allow-warnings
      例如:
pod repo push HJSpec HJSwiftExtension.podspec --verbose --allow-warnings
    1. 修改工程中的Podfile文件
image.png
    1. cd到工程Podfile文件所在位置,執(zhí)行pod install
    1. 最后工程目錄結(jié)構(gòu),僅僅引入了Category這個(gè)目錄:
image.png

至此,子庫(kù)的配置完成、

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容