鴻蒙軟件工程實踐:手把手教你優(yōu)化編譯配置,提升鴻蒙編譯效率
在鴻蒙應(yīng)用開發(fā)中編譯構(gòu)建是開發(fā)者最頻繁的操作,每一次編譯提速都能顯著提升項目整體開發(fā)效率。本次分享幾個簡單卻高效的鴻蒙編譯提速技巧,從編譯配置、構(gòu)建方式等維度進行優(yōu)化,讓你的開發(fā)流程更快捷高效。
1、 編譯配置:通過編譯配置,輕松提升編譯速度,讓開發(fā)效率翻倍。
1) 默認開啟的編譯優(yōu)化配置:DevEco Studio提供了增量構(gòu)建、并行構(gòu)建等能力來提升構(gòu)建效率,減少構(gòu)建耗時。這些構(gòu)建配置默認是開啟的,開發(fā)者可以通過Build Analyzer工具,查看并行(parallel)、增量(incremental)、守護進程(daemon)的開啟情況,建議配置為true,以提升構(gòu)建效率。
2) 特定場景下的性能優(yōu)化配置:
以300萬行ArkTS代碼規(guī)模的工程為例(包含 500 + 模塊、20+ lib 庫),從構(gòu)建流程分析,編譯耗時主要集中在三個核心階段:依賴安裝、語言編譯、壓縮打包;下面將針對以上三個階段,分別給出對應(yīng)的優(yōu)化方案
優(yōu)化1—依賴安裝優(yōu)化:工程中模塊間存在重復(fù)依賴時,可以在工程級統(tǒng)一管理lockfile鎖文件,減少重復(fù)依賴的安裝,優(yōu)化依賴安裝耗時;開發(fā)者可以在.ohpmrc中開啟相關(guān)特性(enable_unified_lockfile=true);ohpm安裝時涉及對.har/.tgz三方包文件的解壓和遍歷,開啟高性能方法優(yōu)化解壓遍歷過程,可減少依賴安裝耗時。開發(fā)者可以在.ohpmrc中開啟相關(guān)特性(enable_boost_extraction_speed=true)。通過開啟這2個配置,依賴安裝耗時可從8min優(yōu)化至1min內(nèi)。
優(yōu)化2—語言編譯優(yōu)化:在本地Debug構(gòu)建時,JS中間產(chǎn)物并不是必須的,在6.0.1(API21)版本,支持配置(ohos.arkCompile.noEmitJs = ture)ArkTS編譯過程中不再生成JS中間產(chǎn)物,從而加快編譯速度,減少編譯內(nèi)存占用。開啟該優(yōu)化后全量編譯耗時可節(jié)省~2min,但在Release模式下,開啟混淆構(gòu)建包含JS中間碼的HAR等場景依舊會生成JS中間產(chǎn)物而沒有優(yōu)化效果。
優(yōu)化3—打包壓縮優(yōu)化:當工程存在大量lib庫且開啟壓縮時,lib庫越大,壓縮耗時越長。本地開發(fā)調(diào)試時,通常不關(guān)心包大小,可在本地構(gòu)建直接跳過 lib 庫壓縮。通過配置(module.json5 -> compressNativeLibs = false)跳過libs庫壓縮過程,提升編譯效率。打包任務(wù)耗時從1min可優(yōu)化至3s。
以上優(yōu)化配置開啟后,本地Debug編譯耗時顯著優(yōu)化,工程全量編譯耗時:從24min優(yōu)化至14min;增量編譯耗時:4min優(yōu)化至2.5min。
3) 平衡編譯性能和內(nèi)存的配置:DevEco Studio提供了內(nèi)存優(yōu)先模式和性能優(yōu)先模式,性能優(yōu)先模式開啟時,啟用了任務(wù)緩存,編譯結(jié)束后常駐內(nèi)存增加。具體可通過hvigor-config.json5 -> properties -> hvigor.enableMemoryCache配置true。將hvigor-config.json5 -> execution -> optimizationStrategy 設(shè)置為"performance"性能優(yōu)先。開發(fā)者可基于實際開發(fā)環(huán)境靈活選擇。
2、 構(gòu)建方式:選擇合適的構(gòu)建方式,精準識別構(gòu)建范圍,讓開發(fā)事半功倍。
如果需要對某個模塊進行開發(fā)調(diào)試,應(yīng)避免使用“Make All Modules”,應(yīng)該使用“Make Module‘***’”,這樣避免編譯過程中對所有模塊啟動編譯打包任務(wù),進而導(dǎo)致編譯耗時變長。當工程下有多個Hap模塊(entry或feature),如果只對某一個Hap進行開發(fā)調(diào)試,也不建議直接使用“Build Hap(s)”進行構(gòu)建,這會對所有的Hap模塊進行構(gòu)建,同樣會帶來較長的編譯耗時。這種情況下建議開發(fā)者使用“Make Module‘***’”進行構(gòu)建,僅構(gòu)建關(guān)注的模塊,提高開發(fā)效率。
當然,如果是修改代碼推包到應(yīng)用設(shè)備上進行調(diào)試時,可以直接點擊“播放”按鈕,使用增量調(diào)試,構(gòu)建并推送增量包,可大幅減少大型應(yīng)用調(diào)試推包時間,顯著提升開發(fā)效率。此外,也可使用Hot Reload,修改代碼并保存后無需重啟應(yīng)用,在真機或模擬器上即可查看最新的代碼效果,幫助開發(fā)者更快速地進行調(diào)試。
3、 更多優(yōu)化配置:可參考HarmonyOS開發(fā)者官網(wǎng),搜索“提升構(gòu)建效率”
當然,還是建議開發(fā)者升級到最新IDE版本,IDE整體性能和內(nèi)存也在持續(xù)優(yōu)化中。IDE下載鏈接請前往HarmonyOS開發(fā)者官網(wǎng),搜索“DevEco Studio”獲取。





