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

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

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

0
分享至

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

增量補丁修復原理圖

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

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

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

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

冷修復:補丁應用后,需要重啟應用 (或 Ability)才能讓修改生效。這通常是因為修改涉及到了應用啟動時才初始化的組件或全局狀態(tài),需要通過重啟來重新加載。

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

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

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

Hot Reload使用位置

使用上,通常在 DevEco Studio 中選擇支持熱重載的運行模式啟動應用,然后在修改 ArkTS 代碼后,點擊工具欄的 Hot Reload 圖標(或使用快捷鍵)。IDE 還支持設置“保存時自動 Hot Reload”,進一步提升流暢性。

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

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

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

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

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

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

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

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

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

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

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

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

Apply Changes:覆蓋更廣的多面手

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

Apply Changes 的使用入口在 IDE 中也很明顯,通常位于標準運行配置旁邊。點擊后,IDE 會構(gòu)建增量補丁,停止設備上的應用,應用補丁,然后重新啟動應用。

Apply Changes使用位置

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

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

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

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

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

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

由于Apply Changes能夠重啟應用,能夠及時進行增量補丁的重新加載,避免了潛在的狀態(tài)不一致問題,修復因狀態(tài)污染可能導致的邏輯異常。

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

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

Apply Changes的幾個實用小Tips也分享一下:

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

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

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

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

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

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)推薦
熱點推薦
突發(fā)暴跌!全線跳水

突發(fā)暴跌!全線跳水

證券時報
2025-12-31 14:27:02
狂勝41分,快船5連勝破紀錄!小卡兩戰(zhàn)88分還在進化 哈登喜笑顏開

狂勝41分,快船5連勝破紀錄!小卡兩戰(zhàn)88分還在進化 哈登喜笑顏開

鍋子籃球
2025-12-31 16:36:16
俄方稱烏方襲擊普京官邸,中方回應

俄方稱烏方襲擊普京官邸,中方回應

中國青年報
2025-12-30 21:00:11
林強涉案989億被抓!生活奢華超過中東富豪,妻子、父母也有責任

林強涉案989億被抓!生活奢華超過中東富豪,妻子、父母也有責任

細品名人
2025-12-31 07:34:46
錯失4年8400萬美元,東契奇調(diào)侃施羅德:你真該簽湖人那份合同的

錯失4年8400萬美元,東契奇調(diào)侃施羅德:你真該簽湖人那份合同的

懂球帝
2025-12-31 12:46:11
白嫖攝影師后續(xù):單位傳開已社死,朋友曝更多,白嫖只是冰山一角

白嫖攝影師后續(xù):單位傳開已社死,朋友曝更多,白嫖只是冰山一角

天天熱點見聞
2025-12-31 06:36:45
成都繞城高速夜間突發(fā)連環(huán)車禍,目擊者稱多人送醫(yī);交警回應:事故已處置完成,道路當晚恢復暢通

成都繞城高速夜間突發(fā)連環(huán)車禍,目擊者稱多人送醫(yī);交警回應:事故已處置完成,道路當晚恢復暢通

大風新聞
2025-12-31 15:45:04
庭審直擊:上海一出納13年掏空公司3500萬,花超百萬養(yǎng)流浪貓

庭審直擊:上海一出納13年掏空公司3500萬,花超百萬養(yǎng)流浪貓

上觀新聞
2025-12-31 15:21:04
圍島第二天,王毅外長發(fā)聲,演習就是針對美國,特朗普罕見說軟話

圍島第二天,王毅外長發(fā)聲,演習就是針對美國,特朗普罕見說軟話

博覽歷史
2025-12-31 09:59:48
一個國家正在崩塌:伊朗女孩扔掉頭巾,如同大清朝開始剪辮子

一個國家正在崩塌:伊朗女孩扔掉頭巾,如同大清朝開始剪辮子

老范談史
2025-12-29 15:59:06
2026國補來了!汽車消費補貼由“定額”改為“按比例”(附對照表)

2026國補來了!汽車消費補貼由“定額”改為“按比例”(附對照表)

每日經(jīng)濟新聞
2025-12-31 09:14:06
人來世間到底是干什么的?你一定要看一看

人來世間到底是干什么的?你一定要看一看

金沛的國學筆記
2025-12-29 17:44:07
上海市紀委監(jiān)委公開通報五起違反中央八項規(guī)定精神典型問題

上海市紀委監(jiān)委公開通報五起違反中央八項規(guī)定精神典型問題

澎湃新聞
2025-12-31 14:24:12
打假“斬殺線”——“饑寒交迫的美國”

打假“斬殺線”——“饑寒交迫的美國”

老頭和你隨便聊聊
2025-12-30 13:33:00
確認了,是江蘇籍女演員白鹿

確認了,是江蘇籍女演員白鹿

最江陰
2025-12-30 15:10:28
最新!法國、英國、加拿大、丹麥、芬蘭等十國外長發(fā)布聯(lián)合聲明

最新!法國、英國、加拿大、丹麥、芬蘭等十國外長發(fā)布聯(lián)合聲明

每日經(jīng)濟新聞
2025-12-31 07:50:06
又一波人賬戶歸零,因為三個漲停追進去出不來了,還有一天退市!

又一波人賬戶歸零,因為三個漲停追進去出不來了,還有一天退市!

財經(jīng)智多星
2025-12-30 15:23:35
元旦到了,別再說“元旦快樂”,太土!教你19句祝福語,好聽不俗

元旦到了,別再說“元旦快樂”,太土!教你19句祝福語,好聽不俗

狼小妖
2025-12-31 00:13:10
南博的事還沒水落石出,川博又來了!

南博的事還沒水落石出,川博又來了!

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

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

極目新聞
2025-12-31 07:52:11
2025-12-31 16:51:00
幻塵科技 incentive-icons
幻塵科技
電腦,數(shù)碼資深愛好者
1960文章數(shù) 8022關(guān)注度
往期回顧 全部

科技要聞

老羅,演砸了,也封神了?

頭條要聞

美國防部稱中國大陸對臺有"四種軍事方案" 國臺辦回應

頭條要聞

美國防部稱中國大陸對臺有"四種軍事方案" 國臺辦回應

體育要聞

2025全球射手榜:姆巴佩66球 梅西第6C羅第9

娛樂要聞

告別2025年!大S、方大同離世青春退場

財經(jīng)要聞

高培勇:分配制度改革是提振消費的抓手

汽車要聞

凱迪拉克純電中型SUV 售價不足24萬/33寸曲面屏

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

游戲
教育
手機
旅游
公開課

小高和剛:100個結(jié)局太少!想做個《兩百日戰(zhàn)紀》

教育要聞

像喜歡年初一樣,喜歡年末 | 2025山東教育的溫暖答卷

手機要聞

小米17 Ultra徠卡版手機正式入駐徠卡相機旗艦店

旅游要聞

煥新迎元旦,煙火暖金陵——南京五大城區(qū)跨年盛宴邀你赴約

公開課

李玫瑾:為什么性格比能力更重要?

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