开发中,调试效率直接影响开发体验。DevEco Studio提供Hot Reload(热重载)能力,支持在真机或模拟器上运行/调试应用时,修改代码并保存后无需重启应用,即可使用最新的代码,更快速地进行调试。

一、热重载、热重启、完全重启的区别

模式 说明
热重载(Hot Reload) 不重启应用,可保留应用状态,但整个过程会重新运行入口文件内的逻辑
热重启(Hot Restart) 会重启应用,不保留应用状态,支持更广泛的ArkTS代码修改快速生效。一旦执行了热重启,后续热重载流程均会被热重启取代
完全重启 完全重新运行应用,会重新全量编译代码和资源文件,较为耗时

说明:Hot Reload不支持卡片,不建议在hotReload模式下执行与卡片相关的操作。

二、使用限制

2.1 修改文件支持范围

修改文件 热重载 热重启 说明
修改Entry入口模块内ets、ts代码文件 -
修改Entry直接/间接依赖的Har模块内代码文件 Har模块与Entry模块间无Hsp
修改Entry直接/间接依赖的Hsp模块内代码文件 -
引入的其他工程Har模块内代码文件 Har模块与Entry模块间无Hsp
引入的其他工程Hsp模块内代码文件 -
修改worker线程文件 -
修改模块目录下Index文件 -
启动应用后新增的代码文件 -
C++、so文件 可通过Apply Changes支持(API 24+)
resource资源文件 支持对资源引用的修改

2.2 主要代码元素支持范围

代码元素 热重载 热重启 说明
UI代码(字号、颜色等) -
UI响应事件(onClick等) -
import(新增) 部分 部分 不支持从启动应用时未加载的文件中import模块
import(修改/删除) -
动态import/lazy import新增 6.1.0 Beta1开始部分支持 6.1.0 Beta1开始部分支持 不支持从启动应用时未加载的文件中import模块
export(新增) 部分 部分 新增export default时应同步在调用文件内新增对应import语句
export(修改/删除) -
装饰器(@State、@Prop等) 部分 部分 @Entry修饰的文件支持@Styles新增/修改/删除
Struct代码块(新增) 部分 @Entry修饰的文件内不支持新增Struct代码块
Struct代码块(修改) 部分 @Entry修饰的文件不支持成员变量/成员函数热重载
类(新增/修改/继承) 部分 @Entry修饰的文件内有限制
枚举(新增/修改) 部分 @Entry修饰的文件内不支持新增枚举
匿名函数/Lambda/闭包函数 -
闭包变量(新增/删除) 部分 部分 热重载仅支持顶层闭包变量

2.3 其他场景

场景 支持情况
命中断点时 不支持(需Resume Program继续执行后再操作)
修改跳转的其他ability页面 热重载不支持,热重启支持

三、开启热重启/Apply Changes(可选)

点击菜单栏File → Settings(macOS为DevEco Studio → Preferences/Settings)→ Build, Execution, Deployment → Hot Reload,勾选以下选项:

选项 说明
Enable hot restart 开启热重启
Enable Apply Changes 开启Apply Changes(支持C++代码及资源文件增量调试,需设备API 24+)

四、操作步骤

4.1 连接设备

连接真机设备或模拟器。

4.2 切换配置

在下拉菜单中,将运行/调试配置切换为Hot Reload的配置。

4.3 运行/调试应用

使用本地真机运行应用或使用模拟器运行应用。

4.4 触发Hot Reload

修改代码后,通过以下方式查看设备上修改后的显示效果:

方式 操作
方式一 点击Hot Reload按钮
方式二 设置Actions on Save勾选Perform hot reload,通过快捷键Ctrl + S触发

注意:方式二不支持Apply Changes,如需使用Apply Changes功能,请使用方式一。

4.5 控制台日志

热重载成功

Performing hot reload...
Syncing files to device xxx
Reloaded 1 files in x s xxx ms.

热重启成功

Performing hot restart...
$ hdc shell aa force-stop com.xx.xx
Syncing files to device xxx
Reloaded 1 files in x s xxx ms.
$ hdc shell aa start -a EntryAbility -b com.xxx.xxx in xxx ms

Apply Changes成功

Performing Apply Changes...
$ hdc shell aa force-stop com.xx.xx
$ hdc file send xx xx in xx ms
FileTransfer finish, Size:xxxx, File count = xx, time:xxx ms rate:xxxx.xxkB/s

4.6 退出Hot Reload

点击停止按钮终止运行/调试运行,退出Hot Reload模式。

五、动态配置签名或应用版本号(可选)

从DevEco Studio 6.0.2 Beta1开始,可以在hvigorfile.ts中动态配置签名或应用版本号,避免每个开发者都需要本地修改。

  • 签名配置:在hvigorfile.ts中配置签名信息,Hot Reload功能仍可正常使用

  • 版本号配置:在hvigorfile.ts中动态配置应用版本号,Hot Reload功能仍可正常使用

 

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐