国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

巧用DevEco Studio增量補(bǔ)丁修復(fù)功能 提升鴻蒙開發(fā)效率

0
分享至

在參與鴻蒙應(yīng)用開發(fā)的過程中,許多開發(fā)者都面臨一個(gè)共同的挑戰(zhàn):如何縮短代碼修改到效果驗(yàn)證的周期?尤其是在大型項(xiàng)目中,哪怕是很小的調(diào)整,完整的編譯和部署流程也可能耗費(fèi)不少時(shí)間。我們都希望能夠更快地看到代碼變更所帶來的實(shí)際效果,提升迭代效率。DevEco Studio 提供了一些機(jī)制來應(yīng)對(duì)這個(gè)問題,其中,“增量補(bǔ)丁修復(fù)”相關(guān)的技術(shù),特別是 Hot Reload 和 Apply Changes 這兩個(gè)功能,值得我們深入了解。它們?yōu)榧铀嬴櫭蓱?yīng)用的調(diào)試和驗(yàn)證過程提供了有效的途徑。

增量補(bǔ)丁修復(fù)原理圖

增量更新:理解快速生效背后的邏輯

所謂“增量補(bǔ)丁修復(fù)”,簡單來說,就是一種避免全量編譯的技術(shù)思路。當(dāng)開發(fā)者修改了代碼或資源后,系統(tǒng)只針對(duì)發(fā)生變化的部分進(jìn)行構(gòu)建,生成一個(gè)“補(bǔ)丁包”。然后,這個(gè)補(bǔ)丁包會(huì)被推送到設(shè)備上,更新正在運(yùn)行的應(yīng)用或準(zhǔn)備下次啟動(dòng)時(shí)加載。

這個(gè)過程根據(jù)應(yīng)用是否需要重啟來使修改生效,可以大致分為兩種模式:

熱修復(fù) :補(bǔ)丁應(yīng)用后,修改能夠無需重啟應(yīng)用就生效。這種方式的好處是能保持應(yīng)用當(dāng)前的狀態(tài),比如用戶界面停留在哪個(gè)頁面,變量的當(dāng)前值等。

冷修復(fù):補(bǔ)丁應(yīng)用后,需要重啟應(yīng)用 (或 Ability)才能讓修改生效。這通常是因?yàn)樾薷纳婕暗搅藨?yīng)用啟動(dòng)時(shí)才初始化的組件或全局狀態(tài),需要通過重啟來重新加載。

DevEco Studio 基于這套邏輯,提供了兩種具體的實(shí)現(xiàn)方式:Hot Reload 和 Apply Changes,它們各有側(cè)重,適用于不同的開發(fā)場景。

Hot Reload:ArkTS 開發(fā)的加速器

對(duì)于主要使用 ArkTS 進(jìn)行 UI 和交互邏輯開發(fā)的場景,Hot Reload 是一個(gè)非常有用的功能。它結(jié)合了增量構(gòu)建和熱修復(fù)的能力,目標(biāo)是實(shí)現(xiàn) ArkTS 代碼修改后的“即時(shí)”預(yù)覽。

Hot Reload使用位置

使用上,通常在 DevEco Studio 中選擇支持熱重載的運(yùn)行模式啟動(dòng)應(yīng)用,然后在修改 ArkTS 代碼后,點(diǎn)擊工具欄的 Hot Reload 圖標(biāo)(或使用快捷鍵)。IDE 還支持設(shè)置“保存時(shí)自動(dòng) Hot Reload”,進(jìn)一步提升流暢性。

Hot Reload 的主要價(jià)值在于:及時(shí)反饋、 保持應(yīng)用狀態(tài)和開發(fā)更流暢。

修改及時(shí)反饋:比如修改按鈕顏色、調(diào)整字體或者微調(diào)布局,以往我們都要重新編譯再運(yùn)行,特別是大項(xiàng)目,每次重啟可能耗費(fèi)好幾分鐘。但用了Hot Reload后,只要代碼改動(dòng)一保存,點(diǎn)一下熱重載按鈕,幾乎秒生效,非常直觀。

保持應(yīng)用狀態(tài):另一個(gè)亮點(diǎn)是不用重啟應(yīng)用,可以保留應(yīng)用運(yùn)行狀態(tài)。比如在應(yīng)用里走到某個(gè)復(fù)雜場景(比如多步表單填寫),代碼改了之后還可以繼續(xù)從當(dāng)前狀態(tài)看效果,不用再一遍遍地重頭操作,這一點(diǎn)確實(shí)提升了不少調(diào)試體驗(yàn)。

開發(fā)更流暢:Hot Reload還支持保存時(shí)自動(dòng)重載,開發(fā)時(shí)修改完代碼,保存后立刻看到效果,整體開發(fā)節(jié)奏更流暢。

不過,Hot Reload 主要服務(wù)于 ArkTS/TS 代碼。它的實(shí)現(xiàn)原理(基于首次構(gòu)建的映射信息進(jìn)行增量編譯和虛擬機(jī)字節(jié)碼更新)決定了其局限性:

不支持部分修改:如添加新的 import(如果該文件之前未被使用)、修改 @Entry 入口組件的結(jié)構(gòu)(如增刪成員函數(shù)/變量)等。詳細(xì)限制可查閱官方文檔。

狀態(tài)可能異常:在某些復(fù)雜情況下,應(yīng)用狀態(tài)可能無法完全正確地保留,尤其是在狀態(tài)管理本身不規(guī)范時(shí)。

范圍有限:它不能處理 C++、資源文件或 .so 庫的修改。

幾個(gè)關(guān)于Hot Reload的實(shí)用小Tips分享給大家:

小步快跑:分解更改為小塊,每次修改后使用Hot Reload查看效果。

結(jié)合狀態(tài)管理:使用狀態(tài)管理工具(如@State、@Prop)可以更好地控制狀態(tài),確保Hot Reload后狀態(tài)的正確性。

定期重啟應(yīng)用:在長時(shí)間開發(fā)后,建議偶爾完全重啟應(yīng)用,以確保代碼和狀態(tài)的一致性。

Apply Changes:覆蓋更廣的多面手

當(dāng)需要修改 C++ 代碼、原生庫 (.so)、資源文件,或者遇到了 Hot Reload 不支持的場景時(shí),Apply Changes 便派上了用場。它同樣采用增量構(gòu)建來提升速度,但為了支持更廣泛的文件類型和更底層的變更,它選擇了“冷修復(fù)”路線——修改生效前會(huì)重啟應(yīng)用。

Apply Changes 的使用入口在 IDE 中也很明顯,通常位于標(biāo)準(zhǔn)運(yùn)行配置旁邊。點(diǎn)擊后,IDE 會(huì)構(gòu)建增量補(bǔ)丁,停止設(shè)備上的應(yīng)用,應(yīng)用補(bǔ)丁,然后重新啟動(dòng)應(yīng)用。

Apply Changes使用位置

Apply Changes 的優(yōu)勢體現(xiàn)在:

一是支持更多樣的文件修改:

目前Apply Changes能夠同時(shí)支持C++、SO、資源文件的一種或多種修改快速生效,且修改場景限制較小。

二是僅需一次推包,關(guān)閉應(yīng)用后也可直接進(jìn)行Apply Changes:

關(guān)于C++、SO以及資源文件的增量編譯及打包都是與工程的運(yùn)行狀態(tài)解耦的,只要設(shè)備中已經(jīng)安裝工程對(duì)應(yīng)的應(yīng)用,那么無需運(yùn)行工程,直接修改代碼點(diǎn)擊Apply Changes即可自動(dòng)拉起應(yīng)用,使修改生效,避免再一次全量構(gòu)建。

三是穩(wěn)定性更高:

由于Apply Changes能夠重啟應(yīng)用,能夠及時(shí)進(jìn)行增量補(bǔ)丁的重新加載,避免了潛在的狀態(tài)不一致問題,修復(fù)因狀態(tài)污染可能導(dǎo)致的邏輯異常。

Apply Changes 的工作流程涉及根據(jù)緩存信息進(jìn)行差異比較和增量構(gòu)建(如 C++ 修改觸發(fā) CMake),然后通過停止、修復(fù)、重啟應(yīng)用的步驟完成更新。

它的主要代價(jià)是丟失應(yīng)用狀態(tài)。每次 Apply Changes 后,應(yīng)用都會(huì)回到初始狀態(tài),需要開發(fā)者手動(dòng)操作才能恢復(fù)之前的場景。此外,目前 Apply Changes暫不支持 ArkTS/TS 代碼的增量更新,這部分仍需依賴 Hot Reload 或完整構(gòu)建。

Apply Changes的幾個(gè)實(shí)用小Tips也分享一下:

優(yōu)先 Hot Reload:當(dāng)你主要跟 ArkTS 代碼打交道,特別是頻繁調(diào)整 UI 和前端邏輯時(shí),用它來獲得最快的反饋。

切換 Apply Changes:當(dāng)修改涉及 C++、.so、資源文件,或者進(jìn)行 Hot Reload 不支持的復(fù)雜 ArkTS 修改時(shí),使用 Apply Changes。雖然需要重啟,但比全量構(gòu)建快得多。

定期全量運(yùn)行:在長時(shí)間開發(fā)或進(jìn)行重要節(jié)點(diǎn)測試前,進(jìn)行一次完整的重新構(gòu)建和運(yùn)行,有助于暴露和清理潛在問題,確保應(yīng)用的整體穩(wěn)定性。

在日常開發(fā)中,Hot Reload 和 Apply Changes 是相輔相成的。理解并恰當(dāng)運(yùn)用 DevEco Studio 提供的這兩種增量更新機(jī)制,能實(shí)實(shí)在在地提升鴻蒙應(yīng)用的開發(fā)調(diào)試效率,幫助開發(fā)者將更多精力聚焦于功能實(shí)現(xiàn)和體驗(yàn)優(yōu)化。

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
羅永浩凌晨發(fā)文稱患ADHD:如換藥失敗,或不能用鍛煉徹底改善體能問題,將不再舉辦大型活動(dòng);此前其“科技春晚”遲到40多分鐘才出現(xiàn)引熱議

羅永浩凌晨發(fā)文稱患ADHD:如換藥失敗,或不能用鍛煉徹底改善體能問題,將不再舉辦大型活動(dòng);此前其“科技春晚”遲到40多分鐘才出現(xiàn)引熱議

極目新聞
2025-12-31 07:52:11
2-2!C羅被動(dòng)破門,書寫3大紀(jì)錄,菲利克斯傳射,勝利10連勝終結(jié)

2-2!C羅被動(dòng)破門,書寫3大紀(jì)錄,菲利克斯傳射,勝利10連勝終結(jié)

我的護(hù)球最獨(dú)特
2025-12-31 03:28:29
19歲小伙疑被騙柬埔寨,母親哭求汪文彬的幫助

19歲小伙疑被騙柬埔寨,母親哭求汪文彬的幫助

映射生活的身影
2025-12-30 15:37:21
全總原副主席張世平71歲被查:曾在全國婦聯(lián)任職,系今年第5個(gè)“女老虎”

全總原副主席張世平71歲被查:曾在全國婦聯(lián)任職,系今年第5個(gè)“女老虎”

界面新聞
2025-12-30 15:53:53
財(cái)政部、稅務(wù)總局:個(gè)人將購買2年以上的住房銷售,免征增值稅

財(cái)政部、稅務(wù)總局:個(gè)人將購買2年以上的住房銷售,免征增值稅

數(shù)據(jù)說經(jīng)濟(jì)
2025-12-30 20:09:40
頂級(jí)的公眾表達(dá)力,臺(tái)北市長蔣萬安的發(fā)言,值得所有職場人學(xué)習(xí)

頂級(jí)的公眾表達(dá)力,臺(tái)北市長蔣萬安的發(fā)言,值得所有職場人學(xué)習(xí)

爆角追蹤
2025-12-30 14:01:04
活久見!網(wǎng)傳廣東一企業(yè)聲稱經(jīng)營發(fā)展需要,不再為員工繳納社保…

火山詩話
2025-12-30 05:51:50

明年汽車“國補(bǔ)”調(diào)整為按比例補(bǔ)貼:購新能源車最高補(bǔ)12%

明年汽車“國補(bǔ)”調(diào)整為按比例補(bǔ)貼:購新能源車最高補(bǔ)12%

澎湃新聞
2025-12-30 20:54:30
世界級(jí)峽谷懸索橋矮寨大橋3顆螺栓松了?管養(yǎng)單位:巡檢已發(fā)現(xiàn)將維修,不影響結(jié)構(gòu)安全

世界級(jí)峽谷懸索橋矮寨大橋3顆螺栓松了?管養(yǎng)單位:巡檢已發(fā)現(xiàn)將維修,不影響結(jié)構(gòu)安全

上游新聞
2025-12-30 12:40:06
山河四省,三億人的悲哀

山河四省,三億人的悲哀

銀河系漫游客
2025-12-30 14:04:48
羅永浩科技春晚遲到50分鐘后現(xiàn)身,200多萬網(wǎng)友在線圍觀,本人發(fā)聲:出現(xiàn)了一些狀況,后續(xù)會(huì)解釋

羅永浩科技春晚遲到50分鐘后現(xiàn)身,200多萬網(wǎng)友在線圍觀,本人發(fā)聲:出現(xiàn)了一些狀況,后續(xù)會(huì)解釋

極目新聞
2025-12-30 20:28:55
“退貨羽絨服口袋現(xiàn)機(jī)票”引爭議!買家遭網(wǎng)暴喊冤:衣服疑二次銷售,自己只穿過一次,已報(bào)警!銷售方稱視頻系供貨廠家發(fā)布

“退貨羽絨服口袋現(xiàn)機(jī)票”引爭議!買家遭網(wǎng)暴喊冤:衣服疑二次銷售,自己只穿過一次,已報(bào)警!銷售方稱視頻系供貨廠家發(fā)布

每日經(jīng)濟(jì)新聞
2025-12-30 16:18:06
買來的出口數(shù)據(jù):耗費(fèi)地方財(cái)政,對(duì)經(jīng)濟(jì)無實(shí)質(zhì)帶動(dòng)

買來的出口數(shù)據(jù):耗費(fèi)地方財(cái)政,對(duì)經(jīng)濟(jì)無實(shí)質(zhì)帶動(dòng)

第一財(cái)經(jīng)資訊
2025-12-29 13:24:09
普京遇襲!特朗普憤怒!莫斯科天空癱瘓!戰(zhàn)爭目標(biāo)擴(kuò)大!

普京遇襲!特朗普憤怒!莫斯科天空癱瘓!戰(zhàn)爭目標(biāo)擴(kuò)大!

漢唐智庫
2025-12-30 09:37:04
一頓飯11個(gè)菜,客廳大得能打球,哭窮的閆學(xué)晶害慘“啃老”的兒子

一頓飯11個(gè)菜,客廳大得能打球,哭窮的閆學(xué)晶害慘“啃老”的兒子

娛小北
2025-12-28 23:49:54
數(shù)千輛“巨無霸”,每天綿延幾公里!滬上公路引發(fā)“安全之憂”,相關(guān)部門回應(yīng)

數(shù)千輛“巨無霸”,每天綿延幾公里!滬上公路引發(fā)“安全之憂”,相關(guān)部門回應(yīng)

新民晚報(bào)
2025-12-30 19:23:40
83萬買建行拿了11年:分紅72萬,收益翻倍!下崗工人的投資逆襲路

83萬買建行拿了11年:分紅72萬,收益翻倍!下崗工人的投資逆襲路

真實(shí)人物采訪
2025-12-30 07:00:04
陳克明面條被明粉抵制,河南衛(wèi)視“萬馬踏青”節(jié)目被清粉舉報(bào)刪除

陳克明面條被明粉抵制,河南衛(wèi)視“萬馬踏青”節(jié)目被清粉舉報(bào)刪除

歷史總在押韻
2025-12-30 16:36:54
俄駐華大使館高調(diào)慶?!侗本l約》奪取外東北(海參崴)160周年

俄駐華大使館高調(diào)慶祝《北京條約》奪取外東北(海參崴)160周年

律法刑道
2025-12-30 08:34:47
340萬桶俄油堵在中國近海,中國為啥不接?答案很現(xiàn)實(shí)。

340萬桶俄油堵在中國近海,中國為啥不接?答案很現(xiàn)實(shí)。

百態(tài)人間
2025-12-30 16:04:45
2025-12-31 08:43:00
幻塵科技 incentive-icons
幻塵科技
電腦,數(shù)碼資深愛好者
1960文章數(shù) 8022關(guān)注度
往期回顧 全部

科技要聞

估值150億的智元,開始批量"制造"小獨(dú)角獸

頭條要聞

70后飛行員翻臉將22歲情人告上法庭 讓其歸還700多萬

頭條要聞

70后飛行員翻臉將22歲情人告上法庭 讓其歸還700多萬

體育要聞

聯(lián)盟第一人倒下了!掘金還有底牌嗎?

娛樂要聞

林俊杰女友被扒 父親涉經(jīng)濟(jì)案卷款13億?

財(cái)經(jīng)要聞

朱光耀:美關(guān)稅政策正使WTO名存實(shí)亡

汽車要聞

標(biāo)配華為乾崑ADS 4 Pro 華境S明年上半年上市

態(tài)度原創(chuàng)

藝術(shù)
游戲
教育
時(shí)尚
數(shù)碼

藝術(shù)要聞

毛主席書法手稿揭示:古帖與現(xiàn)代字帖該如何選擇?

魔壇節(jié)奏|魔超聯(lián)賽S2哈漫喜迎開門紅,KK電競真人秀報(bào)名開啟

教育要聞

義務(wù)教育優(yōu)質(zhì)均衡,究竟要“優(yōu)”什么?“均”什么?

在這里,我們拍到了雪原上的一抹瑞紅

數(shù)碼要聞

蘋果的供應(yīng)鏈護(hù)城河:為何在內(nèi)存漲價(jià)潮中,它比對(duì)手更從容?

無障礙瀏覽 進(jìn)入關(guān)懷版