
前言
上篇文章由美團文章“一款可以讓大型iOS工程編譯速度提升50%的工具”引出的.hmap文件探索介紹了什么是hmap,有什么用!文章結(jié)尾我說會進行落地,然后就比較坑了,感覺不落地,這以后都沒法交代,沒法繼續(xù)寫文章了!后面不再寫這樣的話了,坑!
結(jié)果展示
- 1.創(chuàng)建個項目工程,如下圖所示,紅框為
自己寫的組件

- 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,不管你是小白還是大牛都歡迎入駐 ,讓我們一起進步,共同發(fā)展!(群內(nèi)會免費提供一些群主收藏的免費學(xué)習(xí)書籍資料以及整理好的幾百道面試題和答案文檔?。?/strong>

這個和我們上面文章
讀系統(tǒng)自動生成的格式是一樣的
- 6.
優(yōu)化結(jié)果


上面為沒有使用hmap的編譯時間,下面是使用了hmap的編譯時間,可以明顯感覺到編譯速度提升了!說明我們做的沒錯
分析
上面我們也看到了,我們是通過pod命令來實現(xiàn)生成的hmap的,那么我們就需要使用ruby語言來實現(xiàn)這個功能
- 1.看下這個插件

紅框就是
實現(xiàn)代碼文件,通過文件我們可以感覺它特別像組件

上圖是項目的組件,而
ruby寫的其實ruby的組件,cocoapods其實就是用ruby寫的
- 2.
更新bundle,因為在寫ruby,也會引入依賴庫,就和項目引入第三方庫類似

引入的依賴


到這一步,意味著
更新完成
- 3.生成插件

通過rake install:local命令將寫的組件生成我們要用的插件
- 4.查看插件

上面的紅框就是我現(xiàn)在使用的cocoapods,下面的就是我們剛生成的
代碼分析
代碼也沒啥分析的,因為我的ruby學(xué)的也不怎么樣,就粗略的說一下
hmap創(chuàng)建
- 1.
通過pod獲取相關(guān)信息

因為cocoapods也是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

最后
今天總算寫完了,代碼沒有細講,就是粗略的說了下,會ruby的看看就知道啥意思,不會ruby講的細也不知道啥意思,只需要會用就好了,文后我會放出代碼
后續(xù)
測試沒啥問題,優(yōu)化了其中的一切代碼,完善了一些功能。貼出來插件鏈接:hmap落地。最后補充這個hmap插件對組件化項目效果明顯