文档管理中心

Hot Reload

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

说明

Hot Reload支持Stage模型的ArkTS工程,暂不支持ArkTS卡片相关工程,不建议在hotReload模式下执行与ArkTS卡片的相关操作。

使用约束

表1 当前API版本下热重载的能力支持范围
展开

代码场景

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. 通过USB连接真机设备。
  2. 在下拉菜单中,将运行/调试配置切换为Hot Reload的配置

  3. 运行/调试应用,将代码编译打包运行/调试到真机上,请参考使用本地真机运行应用/元服务调试概述
  4. 修改代码后,可以通过如下操作,查看真机上修改后的显示效果。

    • 点击Hot Reload按钮:

    • 通过快捷键方式触发Hot Reload:需要先在菜单栏点击File > Settings,选择Tools > Actions on Save,勾选Perform hot reload,点击OK完成设置。修改代码后通过快捷键Ctrl + S即可触发Hot Reload。

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

在 指南 中进行搜索
请输入您想要搜索的关键词