由美團文章“一款可以讓大型iOS工程編譯速度提升50%的工具”引出的.hmap文件(下)hmap落地

前言

上篇文章由美團文章“一款可以讓大型iOS工程編譯速度提升50%的工具”引出的.hmap文件探索介紹了什么是hmap,有什么用!文章結(jié)尾我說會進行落地,然后就比較坑了,感覺不落地,這以后都沒法交代,沒法繼續(xù)寫文章了!后面不再寫這樣的話了,坑!

結(jié)果展示

  • 1.創(chuàng)建個項目工程,如下圖所示,紅框為自己寫的組件
  • 2.Pod目錄
  • 3.使用寫的插件生成我們需要的hmap
  • 4.文件變化

發(fā)現(xiàn)podxcconfigHEADER_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插件對組件化項目效果明顯

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

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

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