iOS 組件化

一芥牌、新建工程LZDemo作為殼工程

1桨菜、添加Podfile文件

cd到你剛創(chuàng)建的工程目錄下源哩,執(zhí)行以下語句

pod init

然后會(huì)發(fā)現(xiàn)你的工程目錄下多了Podfile文件

image

2厘线、生成xcworkspace工程

執(zhí)行

pod install

3鸳惯、新建一個(gè)Lib(自己起名)文件夾商蕴,用來存放組件庫(其他獨(dú)立工程)

image

然后cd到Lib下
執(zhí)行

pod lib create TRUNetworking

其中TRUNetworking就是你自定義的一個(gè)工程名字,也就是你的其中一個(gè)組件或者業(yè)務(wù)模塊

image

然后根據(jù)提示芝发,生成pod工程模板

image

打開新建的TRUNetworking工程里的Example绪商,可以看到pods里面,有個(gè)ReplaceMe的文件辅鲸,意思就是要替換它格郁,換成我們自己需要對(duì)外提供的類。

image

新建一個(gè)類独悴,比如TRUNetworking例书,復(fù)制粘貼到ReplaceMe同級(jí)目錄下,并刪掉ReplaceMe.m文件

image

之后cd到Lib/TRUNetworking/Example/文件目錄下绵患,執(zhí)行

pod install

這個(gè)時(shí)候在Development Pods文件下會(huì)多出這兩個(gè)文件雾叭,這就是本地開發(fā)的pods文件

image

而Podfile的內(nèi)容其實(shí)是
pod 'TRUNetworking', :path => '../'
說明他獲取的是本地路徑

然后刪除Example for TRUNetworking里面的TRUNetworking類,不然運(yùn)行會(huì)因?yàn)轭愔貜?fù)報(bào)錯(cuò)落蝙。
至此织狐,一個(gè)組件的本地庫就創(chuàng)建完成了。

二筏勒、殼工程使用本地組件庫

首先cd到殼工程LZDemo目錄下移迫,修改LZDemo的Podfile文件,增加
pod 'TRUNetworking', :path => 'Lib/TRUNetworking'

image

執(zhí)行

pod install

image

這樣殼工程就pod到本地組件庫的內(nèi)容了管行,原理跟使用平時(shí)的第三方遠(yuǎn)程庫一樣厨埋。只不過這次使用的是本地的。只不過本地的pod放在了Development Pods文件夾里面捐顷,這個(gè)文件夾里的內(nèi)容其實(shí)是可以修改的荡陷,修改后立刻生效雨效,會(huì)比遠(yuǎn)程pod需要提交版本號(hào),本地再pod對(duì)應(yīng)的版本號(hào)方便得多废赞。

我們?cè)儆猛瑯臃椒▌?chuàng)建另一個(gè)本地工程徽龟,登錄模塊TRULogining
但是這個(gè)模塊需要依賴TRUNetworking,所以我們得在兩個(gè)地方添加依賴

image
image

由于依賴的TRUNetworking在更上一層的文件中唉地,所以需要../../
執(zhí)行

pod install

之后應(yīng)該能看到Development Pods里已經(jīng)有2個(gè)文件夾了

image

這個(gè)時(shí)候就可以import里面的類据悔,在本地使用了。

三耘沼、關(guān)聯(lián)git
完成了本地pod依賴极颓,但是我們肯定不會(huì)是個(gè)人開發(fā),否則弄這個(gè)組件化的意義也不大群嗤,所以我們首先得提交到遠(yuǎn)程菠隆,一般公司里都會(huì)搭建私有倉庫諸如GitLab,這里就拿GitHub來做演示骚烧。

1)提交殼工程到遠(yuǎn)程
首先浸赫,在Github上Create a new repository

image

然后闰围,cd回殼工程目錄下赃绊,依次執(zhí)行

git init

初始化git

git add .

執(zhí)行g(shù)it add .的時(shí)候,會(huì)發(fā)現(xiàn)警告warning: adding embedded git repository: Lib/TRULogining之類的羡榴,是因?yàn)門RULogining目錄下有它自己的git倉庫碧查,它倆是獨(dú)立存在的,有另外一個(gè)git倉庫專門管理他校仑,因?yàn)樗彩且粋€(gè)完整的獨(dú)立工程忠售,這里我們先忽略它。

然后迄沫,提交初始化工程

git commit -m "init project"

接下來稻扬,我們要讓這個(gè)工程和剛才在Github上創(chuàng)建的Repository關(guān)聯(lián)

git remote add origin https://github.com/liuzhao/LZDemo.git

git branch -M main
git push -u origin main

刷新一下Github上的LZDemo,會(huì)看到已經(jīng)提交上去了

image

2)提交子工程到遠(yuǎn)端

image

和提交主工程一樣的做法羊瘩,分別在Github上Create a new repository泰佳,然后把他們關(guān)聯(lián)起來

唯一和殼工程不同的是,他們是組件尘吗,需要對(duì)外提供依賴關(guān)系逝她。所以我們還得多做一步操作,那就是增加podspec文件睬捶。
以TRUNetworking為例黔宛,cd到TRUNetworking目錄下,執(zhí)行

git tag 0.1.0
git push --tags

刷新一下Github上的地址擒贸,會(huì)看到多了一個(gè)分支

image

這個(gè)tag分支就是將來提供給別人依賴的版本號(hào)分支臀晃,有了它觉渴,別人使用你的組件的時(shí)候就可以根據(jù)版本號(hào)來控制了。

接下來徽惋,使用trunk方式將代碼發(fā)布到CocoaPods上
首先先編輯一下podspec文件

image

改好后疆拘,在上傳之前,最好先本地檢查一下podspec是否合法

執(zhí)行下面語句

pod lib lint --verbose
或
pod lib lint --allow-warnings --verbose

截屏2021-07-08 下午10.39.06.png

如果出現(xiàn)passed validation寂曹,說明通過哎迄,可以提交到cocoapods上了

接著你需要注冊(cè)?個(gè)trunk賬號(hào):

pod trunk register  '郵箱'  '昵稱' 

成功之后會(huì)有讓你打開郵箱進(jìn)?
驗(yàn)證的提示,打開你的郵箱點(diǎn)擊鏈接進(jìn)?驗(yàn)證隆圆。

驗(yàn)證之后漱挚,

輸?:pod trunk me

進(jìn)?驗(yàn)證,看是否激活成功渺氧。

執(zhí)行

pod trunk push TRUNetworking.podspec --verbose
或
pod trunk push TRUNetworking.podspec --allow-warnings(可能需要?會(huì))
截屏2021-07-08 下午5.28.57.png

成功后旨涝,就可以pod search到我們提交的庫了
ps:如果搜不到,不是沒傳成功侣背,是我們的本地搜索庫沒更新白华,可以先刪除~/Library/Caches/CocoaPods目錄下的search_index.json文件或者pod repo update一下
終端執(zhí)行

rm ~/Library/Caches/CocoaPods/search_index.json

再執(zhí)行

pod search

image

這樣,本地庫就會(huì)變成遠(yuǎn)程庫贩耐,我殼工程的podfile文件就可以改成
pod 'TRUNetworking'弧腥,而不再需要后面的path了

image

重新對(duì)殼工程LZDemo進(jìn)行pod install之后,會(huì)發(fā)現(xiàn)潮太,原來的TRUNetworking文件已經(jīng)從Development Pods里跑到Pods里去了

image

一些注意點(diǎn):

1)如果pod trunk push上去的podspec文件管搪,如果有依賴庫,這個(gè)依賴庫必須是在cocoapods上铡买,即使是不能依賴本地庫更鲁,而是遠(yuǎn)程庫。所以說奇钞,比如剛才創(chuàng)建的TRUNetworking和TRULogining澡为,如果要發(fā)布TRULogining到cocoapods,但是由于TRULogining是依賴于TRUNetworking的景埃,所以要首先將TRUNetworking提上到cocoapods上媒至,否則TRULogining是提不上去的。

2)由于殼工程和子工程都有獨(dú)立存在的git纠亚,所以別人從殼工程的git地址clone下來的工程塘慕,是沒有子工程的存在的。如果想運(yùn)行起來殼工程蒂胞,要么是所有的子工程都已經(jīng)提到cocoapods上图呢,要么是拿到子工程的git地址,checkout到本地殼工程的Lib庫下。

3)如果你不想每簡歷一個(gè)子工程蛤织,都要到Github或者GitLab上創(chuàng)建一個(gè)repository的話赴叹,又想把子工程push到殼工程的git上的話,可以先把子工程里的git刪除指蚜,這樣push上的殼工程代碼乞巧,就會(huì)帶上子工程了,等你需要單獨(dú)管理子工程的時(shí)候摊鸡,再把git加回去即可绽媒。

版本更新

1.代碼更新

cd 項(xiàng)目的目錄
git init
git add .

查看代碼的修改 
git status 
//modified 標(biāo)示修改的文件 
//deleted標(biāo)示刪除的文件 
// untracked files 未處理的文件 需要執(zhí)行 git add方法添加上去

提交代碼 
git commit -m ‘注釋’ 注意添加注釋

同步代碼 
git pull

把代碼推到服務(wù)器上 
git push origin

git tag 0.1.0(最新的版本)
git push --tags

pod lib lint --allow-warnings --verbose

pod trunk push TRUNetworking.podspec --allow-warnings

鏈接:http://www.reibang.com/p/c91f8214ecc8

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市免猾,隨后出現(xiàn)的幾起案子是辕,更是在濱河造成了極大的恐慌,老刑警劉巖猎提,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件获三,死亡現(xiàn)場離奇詭異,居然都是意外死亡锨苏,警方通過查閱死者的電腦和手機(jī)疙教,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伞租,“玉大人贞谓,你說我怎么就攤上這事】舷模” “怎么了经宏?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵犀暑,是天一觀的道長驯击。 經(jīng)常有香客問我,道長耐亏,這世上最難降的妖魔是什么徊都? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮广辰,結(jié)果婚禮上暇矫,老公的妹妹穿的比我還像新娘。我一直安慰自己择吊,他們只是感情好李根,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著几睛,像睡著了一般房轿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天囱持,我揣著相機(jī)與錄音夯接,去河邊找鬼。 笑死纷妆,一個(gè)胖子當(dāng)著我的面吹牛盔几,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播掩幢,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼逊拍,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了际邻?” 一聲冷哼從身側(cè)響起顺献,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎枯怖,沒想到半個(gè)月后注整,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡度硝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年肿轨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕊程。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡椒袍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出藻茂,到底是詐尸還是另有隱情驹暑,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布辨赐,位于F島的核電站优俘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏掀序。R本人自食惡果不足惜帆焕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望不恭。 院中可真熱鬧叶雹,春花似錦、人聲如沸换吧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沾瓦。三九已至满着,卻和暖如春打颤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漓滔。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國打工编饺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人响驴。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓透且,卻偏偏與公主長得像,于是被迫代替她去往敵國和親豁鲤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子秽誊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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

  • 一、新建工程LZDemo作為殼工程 1琳骡、添加Podfile文件 cd到你剛創(chuàng)建的工程目錄下锅论,執(zhí)行以下語句 然后會(huì)發(fā)...
    iOS_Coder閱讀 1,283評(píng)論 1 1
  • 一、新建工程LZDemo作為殼工程 1楣号、添加Podfile文件 cd到你剛創(chuàng)建的工程目錄下最易,執(zhí)行以下語句 然后會(huì)發(fā)...
    MMR無與倫比閱讀 51,163評(píng)論 30 190
  • 人 好好休息,天天向上炫狱,繼續(xù)調(diào)整狀態(tài)藻懒。 狗 自從有了昨天進(jìn)空調(diào)房睡午覺的經(jīng)驗(yàn)之后,今天中午我打算進(jìn)房間睡覺的時(shí)候视译,...
    啟發(fā)禪悟閱讀 332評(píng)論 0 1
  • 一嬉荆、概述 經(jīng)過多年的發(fā)展,美柚iOS項(xiàng)目代碼已經(jīng)達(dá)到40W行+的規(guī)模酷含,所使用的 Pod 庫的數(shù)量達(dá)到了110+鄙早,A...
    MTDeveloper閱讀 2,058評(píng)論 0 12
  • 一、新建工程 GSComponent 作為殼工程 1椅亚、添加Podfile文件 cd 到你剛創(chuàng)建的工程目錄下限番,執(zhí)行以...
    GSNICE閱讀 1,622評(píng)論 0 5