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

利用CocoaPods集成的優(yōu)勢(shì)事扭,管理代碼塊邑雅,組件诀浪,實(shí)現(xiàn)模塊化開發(fā)宛畦。實(shí)現(xiàn)的效果是把封裝起來的常用的功能或者組件趋观,放到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)建代碼倉庫
  3. 制作本地庫(創(chuàng)建和配置podspec文件)
  4. 驗(yàn)證
  5. 創(chuàng)建字庫Subspec

一、安裝cocoapods

不做過多的介紹

二徒恋、github創(chuàng)建代碼倉庫

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

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

使用命令:

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

可以使用 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)程索引倉庫HJSpec生產(chǎn)完成

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

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


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

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

pod lib create HJSwiftExtension
image.png

問題的意思就是這樣:

1.你想要使用哪個(gè)平臺(tái)亿乳?[iOS / macOs]
2.你想要使用哪種語言?[Swift / ObjC]
3.你的庫中是否包含一個(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)來)
image.png
3.3 編輯.podspec 文件
image.png

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

name:框架名
version:當(dāng)前版本(注意,是當(dāng)前版本魔眨,假如你后續(xù)更新了新版本媳维,需要修改此處)
summary:簡(jiǎn)要描述,在pod search HJSwiftExtension的時(shí)候會(huì)顯示該信息遏暴。
description:詳細(xì)描述
homepage:頁面鏈接
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)庫
vendored_libraries:依賴的非系統(tǒng)的靜態(tài)庫
dependency:依賴的三方庫

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

source來源 一定要填寫正確 可以打開

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依賴了私有庫杂彭,需要將其對(duì)應(yīng)的spec包含進(jìn)來墓毒,不然會(huì)報(bào)找不到對(duì)應(yīng)庫的問題。參數(shù)可以是本地spec的名稱亲怠,也可以是git地址所计。
--allow-warnings:允許警告檢測(cè)通過。
--verbose:打印詳細(xì)的檢驗(yàn)過程
--use-libraries:?程或者依賴??了靜態(tài)庫(*.a?件)或者是framework

3.5 把本地組件代碼推到遠(yuǎn)端团秽,并打個(gè)標(biāo)簽
git add .
git commit -m '第一次提交'
git remote add origin 組件代碼庫地址
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

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

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

首先习勤,通過

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

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

pod spec lint --verbose --allow-warnings 

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

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

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

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

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

四、驗(yàn)證

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

五夷都、創(chuàng)建子庫Subspec

設(shè)置子庫的作用

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

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


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


    1. 安裝一下子庫笆焰,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)程索引庫名稱> <本地索引文件名> - -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

至此嚷掠,子庫的配置完成捏检、

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市不皆,隨后出現(xiàn)的幾起案子贯城,更是在濱河造成了極大的恐慌,老刑警劉巖霹娄,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件能犯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡犬耻,警方通過查閱死者的電腦和手機(jī)踩晶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枕磁,“玉大人渡蜻,你說我怎么就攤上這事〖萍茫” “怎么了茸苇?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)沦寂。 經(jīng)常有香客問我学密,道長(zhǎng),這世上最難降的妖魔是什么凑队? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任则果,我火速辦了婚禮,結(jié)果婚禮上漩氨,老公的妹妹穿的比我還像新娘西壮。我一直安慰自己,他們只是感情好叫惊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布款青。 她就那樣靜靜地躺著,像睡著了一般霍狰。 火紅的嫁衣襯著肌膚如雪抡草。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天蔗坯,我揣著相機(jī)與錄音康震,去河邊找鬼。 笑死宾濒,一個(gè)胖子當(dāng)著我的面吹牛腿短,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼橘忱,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼赴魁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钝诚,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤颖御,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后凝颇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潘拱,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年祈噪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泽铛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辑鲤,死狀恐怖盔腔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情月褥,我是刑警寧澤弛随,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站宁赤,受9級(jí)特大地震影響舀透,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜决左,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一愕够、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佛猛,春花似錦惑芭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至婴渡,卻和暖如春幻锁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背边臼。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工哄尔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人柠并。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓究飞,卻偏偏與公主長(zhǎng)得像置谦,于是被迫代替她去往敵國和親堂鲤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子亿傅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容