前言
上篇文章由美團(tuán)文章“一款可以讓大型iOS工程編譯速度提升50%的工具”引出的.hmap文件探索介紹了什么是hmap,有什么用!文章結(jié)尾我說會進(jìn)行落地,然后就比較坑了,感覺不落地,這以后都沒法交代,沒法繼續(xù)寫文章了!后面不再寫這樣的話了,坑!
結(jié)果展示
- 1.創(chuàng)建個項目工程,如下圖所示,紅框?yàn)?code>自己寫的組件
- 2.
Pod目錄
- 3.使用寫的
插件
,生成
我們需要的hmap
- 4.
文件變化
發(fā)現(xiàn)
pod
的xcconfig
的HEADER_SEARCH_PATHS添加了hmap路徑
此時我們的
文件目錄
也發(fā)生了變化,在Headers文件中多生成了一個Hmap
,在Hmap文件夾
下,我們根據(jù)Cocoapods引入不同的庫而生成
了相應(yīng)的.hmap文件
- 5.
讀取
一下hmap
首先作為一個開發(fā)者,有一個學(xué)習(xí)的氛圍跟一個交流圈子特別重要,這是一個我的iOS開發(fā)交流群:130 595 548,不管你是小白還是大牛都?xì)g迎入駐 ,讓我們一起進(jìn)步,共同發(fā)展!(群內(nèi)會免費(fèi)提供一些群主收藏的免費(fèi)學(xué)習(xí)書籍資料以及整理好的幾百道面試題和答案文檔!)
這個和我們上面文章
讀系統(tǒng)自動生成的格式是一樣
的
- 6.
優(yōu)化結(jié)果
上面
為沒有使用hmap的編譯時間
,下面
是使用了hmap的編譯時間
,可以明顯感覺到編譯速度提升
了!說明我們做的沒錯
分析
上面我們也看到了,我們是通過pod命令
來實(shí)現(xiàn)生成的hmap
的,那么我們就需要使用ruby語言
來實(shí)現(xiàn)
這個功能
- 1.看下這個插件
紅框就是
實(shí)現(xiàn)代碼文件
,通過文件我們可以感覺它特別像組件
上圖是項目的組件,而
ruby
寫的其實(shí)ruby的組件
,cocoapods
其實(shí)就是用ruby寫的
- 2.
更新bundle
,因?yàn)樵?code>寫ruby,也會引入依賴庫
,就和項目引入第三方庫類似
引入的依賴
到這一步,意味著
更新完成
- 3.生成插件
通過rake install:local命令將寫的組件生成我們要用的插件
- 4.查看插件
上面的紅框就是我現(xiàn)在使用的cocoapods,下面的就是我們剛生成的
代碼分析
代碼也沒啥分析的,因?yàn)槲业膔uby學(xué)的也不怎么樣,就粗略的說一下
hmap創(chuàng)建
- 1.
通過pod獲取相關(guān)信息
因?yàn)閏ocoapods也是ruby寫的,所以我們可以引入cocoapods,通過cocoapods獲取podfile
- 2.
獲取將要生成的Header路徑
- 3.
獲取pod所有的Target,通過Target名稱生成相應(yīng)的文件
調(diào)用了
create方法
,生成hmap
- 4.
將hmap路徑生成好
- 5.
將生成的hmap路徑導(dǎo)入xcconfig中
hmap寫入
上面說了hmap創(chuàng)建
并將路徑寫入到xcconfig中
,下面說下怎么寫入的
- 1.
生成Header
就是
生成HMapHeader
,這部分內(nèi)容在上面文章中講過了
- 2.
生成Bucket
- 3.
生成String
最后
今天總算寫完了,代碼沒有細(xì)講,就是粗略的說了下,會ruby的看看就知道啥意思,不會ruby講的細(xì)也不知道啥意思,只需要會用就好了,文后我會放出代碼
后續(xù)
測試沒啥問題,優(yōu)化了其中的一切代碼,完善了一些功能。貼出來插件鏈接:hmap落地。最后補(bǔ)充這個hmap插件對組件化項目效果明顯