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
更多关于HarmonyOS鸿蒙Next中src目录下的代码修改不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
模块级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
在HarmonyOS Next中,src目录代码修改不生效可能是由于缓存或编译问题导致。请尝试清理项目缓存并重新构建,确保修改后的代码正确编译到应用中。检查资源引用和模块配置是否正确同步。
在HarmonyOS Next开发中,hvigor构建系统默认仅监控src/main/ets
目录下的代码变更。对于src
目录下的其他文件(如纯TS模块),修改后不会触发自动增量编译,因此会出现UP-TO-DATE状态。
建议通过以下方式解决:
- 将纯TS模块迁移至
src/main/ets
目录,这是推荐的代码结构,可确保修改被正确监控。 - 如果必须保留在
src
目录下,可尝试在hvigorfile.ts
中配置自定义文件监听规则,但需注意这可能影响构建性能。 - 临时解决方案是每次修改后执行
Clean Project
,或同时修改ets
目录下的文件以触发重新编译。
当前hvigor的增量编译机制主要针对标准目录优化,非标准路径的监控支持有限。