HotReload-热重载
Hot Reload(热重载)
Hot Reload(热重载)
‼️这里的热重载限制很多,不像reactnative、Flutter那样,切记注意,不然调试半天还以为是自己的BUG😂😂😂
DevEco Studio提供Hot Reload(热重载)能力,支持开发者在真机或模拟器上运行/调试应用时,修改代码并保存后无需重启应用,在真机或模拟器上即可使用最新的代码,帮助开发者更快速地进行调试。
说明
Hot Reload支持Stage模型的ArkTS工程,暂不支持ArkTS卡片相关工程,不建议在hotReload模式下执行与ArkTS卡片的相关操作。
使用约束
| 代码场景 | API 12 | 限制条件 | | — | — | — | | UI代码修改 | 支持 | - | | UI相应事件 | 支持 | - | | 多文件修改 | 支持 | - | | 类/接口/枚举 | 部分支持 | @Entry入口文件内class成员函数新增不支持;@Entry入口文件内枚举修改不支持。 | | 匿名函数 | 支持 | - | | Lambda函数 | 支持 | - | | 类继承 | 部分支持 | 继承类和被继承类都不可以放在@Entry入口文件内。 | | 成员方法和成员变量 | 部分支持 | @Entry入口文件struct Index内成员变量、成员函数不支持。 | | 闭包函数 | 支持 | - | | 闭包变量 | 部分支持 | 不支持@Entry闭包变量修改。 | | import和export | 部分支持 | 不支持import引入未加载的模块;只修改export default会导致热重载失效。 | | 自定义组件 | 支持 | @Component自定义组件要放在非@Entry入口文件,使用import方式引入,且不能保留自定义组件热重载之前状态。 | | 代码文件(新增和删除) | 不支持 | - |
对上面表格的解释说明:
- 当前API 版本为12,需要使用配套版本的设备镜像。
- 同一时间只支持一个工程的热重载,支持本工程一个模块(Module)内多个文件的修改。
- 支持修改UI代码,包括增删改,新增代码可以调用本代码文件或其他代码文件的类和方法。
- 支持调整组件响应事件的函数,修改函数实现,新增代码可以调用本代码文件或其它代码文件的类和方法。
- 支持ets声明式代码或ts代码文件的热重载,支持类、接口、枚举的增删改,支持匿名函数、Lambda函数的增删改。不支持@Entry入口文件内枚举的修改。
- 支持顶层闭包函数的增删改,支持顶层闭包变量的新增、删除,但不支持顶层闭包变量的修改。
- 支持@Component自定义组件的增删改,建议以import导入方式使用自定义组件,不支持@Component自定义组件在@Entry入口文件内的热重载。
- 支持class类成员函数和成员变量的增删改,但@Entry入口文件内的class成员函数新增不支持。支持class类继承,但继承类与被继承类都不可以放在@Entry入口文件内。
- 支持import引入文件的修改,并将修改添加到引入语句中使用,但要保证文件在热重载之前的状态已被引用。
- 仅支持运行单Ability工程的热重载,在多个Ability运行的工程中进行热重载可能导致异常。
- Hot Reload不支持以下场景:
- 不支持增加和删除代码文件。
- 不支持import未加载模块的新增、修改。若一个代码文件在热重载启动工程的时候未被当前代码文件引用,则不支持在热重载过程中以新增import语句的方式在当前文件中引用此文件。若import语句在执行热重载之前是置灰的,则此文件在编译阶段不会参与编译,属于未加载模块,会导致热重载失败,此场景目前不能做到正确识别,目前会导致app闪退和弹出jsCrash。
- 不支持仅出现的export default这会导致引用的元素发生错乱,建议使用export default时和import修改一起使用。
- 在@Entry入口文件内不支持大部分装饰器的新增、修改。@Entry入口文件内不支持class类继承。不支持@Entry注释的struct Index内成员变量、成员函数的热重载。
- 在@Entry入口文件中不支持两个及以上的struct组件新增、修改,可以通过使用export、import导入导出实现struct组件的引用。
- 不支持资源修改热重载;不支持resource资源文件的修改(如修改string.json文件的内容),支持对资源引用的修改(如把$r(‘app.color.color’)改成$r(‘app.color.color1’));不支持so的热重载。
- 调试在命中断点时不支持热重载。
- 不支持主进程之外其他进程的模块的热重载。
- 不支持worker线程文件的热重载。
操作步骤
- 运行/调试应用,将代码编译打包运行/调试到真机上,请参考使用本地真机运行应用/服务或调试概述。
- 修改代码后,可以通过如下操作,查看真机上修改后的显示效果。
1
- 通过快捷键方式触发Hot Reload:需要先在菜单栏点击**File > Settings**,选择**Tools > Actions on Save**,勾选**Perform hot reload**,点击**OK**完成设置。修改代码后通过快捷键**Ctrl + S**即可触发Hot Reload。
- 点击停止按钮终止运行/调试运行,退出Hot Reload模式。




