HarmonyOS鸿蒙Next中src目录下的代码修改不生效

HarmonyOS鸿蒙Next中src目录下的代码修改不生效 我知道正常代码应该放在src/main/ets目录下, 这里的代码没问题,

但是我这边有些模块由于是纯ts,使用vscode开发的, 代码在src目录下,做成兼容鸿蒙的模块也正常使用, 然后问题是这部分代码修改后运行不会生效,需要clean project,或者同时有修改src/main/ets的代码,

我想问有没有办法允许src目录下的代码正常监控修改,修改后直接点运行就生效,或者强制这一步不要up-to-date,

最小复现代码示例,项目运行后, 仅修改这个SrcClass的话点击运行不会编译生效,build日志显示,

hvigor UP-TO-DATE :entry:default@CompileArkTS

https://github.com/AoEiuV020/ArkTsDemo/blob/up-to-datate/entry/src/SrcClass.ets

cke_23915.png


更多关于HarmonyOS鸿蒙Next中src目录下的代码修改不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

模块级build-profile.json5中,source配置信息用于指定target的源码范围,其中sourceRoots字段表示Stage模型工程中支持对差异化代码空间进行定制。

根据上述问题,可以进行如下配置:

{
  "apiType": "stageMode",
  "buildOption": {
  },
  "buildOptionSet": [
    {
      "name": "release",
      "arkOptions": {
        "obfuscation": {
          "ruleOptions": {
            "enable": false,
            "files": [
              "./obfuscation-rules.txt"
            ]
          }
        }
      }
    },
  ],
  "targets": [
    {
      "name": "default",
      "source": {"sourceRoots": ["./src/test/"]}
    },
    {
      "name": "ohosTest",
    }
  ]
}

sourceRoots字段对应的字符串数组中元素必须是一个文件夹,也就是说必须把问题描述中src目录下的代码文件一个文件夹下,比如test目录下,这样再修改test目录下的文件内容就能立即生效。

更多关于HarmonyOS鸿蒙Next中src目录下的代码修改不生效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


有效, 但没办法添加直接放在src目录的文件, 也只能转移了, Relative directory path(like ./src/**) is required for sourceRoots.

嗯, 确实目前只有放在目录下才行,

我目前是添加了个脚本任务, 在app任务执行前自动执行这个脚本随便更新了个src/main/ets中没用的ets文件,这样每次运行就都会触发CompileArkts,不会出现不生效的问题,副作用就是增量编译可能失效, ets代码有修改的情况是不是整个项目所有js/ts/ets都会重新编译?

"// $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" > ./entry/src/main/ets/date.ets

cke_130.png

在HarmonyOS Next中,src目录代码修改不生效可能是由于缓存或编译问题导致。请尝试清理项目缓存并重新构建,确保修改后的代码正确编译到应用中。检查资源引用和模块配置是否正确同步。

在HarmonyOS Next开发中,hvigor构建系统默认仅监控src/main/ets目录下的代码变更。对于src目录下的其他文件(如纯TS模块),修改后不会触发自动增量编译,因此会出现UP-TO-DATE状态。

建议通过以下方式解决:

  1. 将纯TS模块迁移至src/main/ets目录,这是推荐的代码结构,可确保修改被正确监控。
  2. 如果必须保留在src目录下,可尝试在hvigorfile.ts中配置自定义文件监听规则,但需注意这可能影响构建性能。
  3. 临时解决方案是每次修改后执行Clean Project,或同时修改ets目录下的文件以触发重新编译。

当前hvigor的增量编译机制主要针对标准目录优化,非标准路径的监控支持有限。

回到顶部