HarmonyOS 鸿蒙Next 手动创建worker,添加sourceOption后无法编译

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 手动创建worker,添加sourceOption后无法编译 按照文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/itc-with-worker-0000001427744572-V2

进行操作,在buildOption中添加sourceOption后,提示为非法值,仅接受’artifactType’, ‘externalNativeOptions’, ‘napiLibFilterOption’ 三种值。

完整报错信息如下:

C:\program1\nvm\v16.20.2\node.exe C:\Users\ttt\.hvigor\project_caches\1935b21bd68c008e4cbef01e7e699056\workspace\node_modules\@ohos\hvigor\bin\hvigor.js --sync -p product=default
> hvigor ERROR: Schema validate failed.
	 Detail: Please check the following fields.
{
  instancePath: 'buildOption',
  keyword: 'enum',
  params: {
    allowedValues: ['artifactType', 'externalNativeOptions', 'napiLibFilterOption']
  },
  message: 'must be equal to one of the allowed values',
  location: 'C:/documents/Temp/harmoneyApp1/testapp/build-profile.json5:3:19'
} 
{
  instancePath: 'buildOption',
  keyword: 'propertyNames',
  params: { propertyName: 'sourceOption' },
  message: 'property name must be valid',
  location: 'C:/documents/Temp/harmoneyApp1/testapp/build-profile.json5:3:19'
} 
{
  instancePath: '',
  keyword: 'if',
  params: { failingKeyword: 'then' },
  message: 'must match "then" schema',
  location: 'C:/documents/Temp/harmoneyApp1/testapp/build-profile.json5:1:2'
} 
{
  instancePath: 'buildOption',
  keyword: 'enum',
  params: {
    allowedValues: ['artifactType', 'externalNativeOptions', 'napiLibFilterOption']
  },
  message: 'must be equal to one of the allowed values',
  location: 'C:/documents/Temp/harmoneyApp1/testapp/build-profile.json5:3:19'
} 
{
  instancePath: 'buildOption',
  keyword: 'propertyNames',
  params: { propertyName: 'sourceOption' },
  message: 'property name must be valid',
  location: 'C:/documents/Temp/harmoneyApp1/testapp/build-profile.json5:3:19'
} 

> hvigor ERROR: BUILD FAILED in 127 ms 

Process finished with exit code -1

更多关于HarmonyOS 鸿蒙Next 手动创建worker,添加sourceOption后无法编译的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

studio有自动生成workers的创建功能,可以自动生成下,在比对下哪里存在问题。

建议自动生成,可能会有bulider里面相关的文件需要生成。

更多关于HarmonyOS 鸿蒙Next 手动创建worker,添加sourceOption后无法编译的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我曾经看到过“studio有自动生成workers的创建功能”,我尝试了一下,发现也不能,
然后推测是因为我现在是在library module使用worker,我印象中文档中有提到“在非ability module中无法使用worker”,但是我找不到这句话了。

是可以自动创建成功的,我这边已经使用过了。之前的话是不支持在hsp,har用的有坑,现在也是可以用的,我是版本11,在hsp,可以自动创建并且使用,只是在使用的时候,注意下路径按照文档里面说的hsp的格式设置就可以了;

其实worker最难用的之一就是创建ThreadWorker怎么使用路径描述的不是很明白,之二就是线程完全隔离的,导致很难用,尤其涉及到了线程中同步问题的时候,很难满足需求,我是已经弃用了。

实在不知道问题出现哪里,您可以按照您的项目写一个demo,发给鸿蒙客服让他帮你找问题,他们这个设计可能就没有考虑到使用便捷方便的问题。

其实最好先想好是不是一定需要使用worker,否则坑太多了。现在worker在11版是支持8个,好像在12版本支持64个,但是还存在har里面多分代码的问题;坑太多了,我觉得是之前鸿蒙自己也没有想好这个实际问题有多少,为了性能,把线程隔离了,但是对隔离出现问题并没有开始就去解决,导致用起来坑不少。有点鸡肋了。

在HarmonyOS(鸿蒙)系统中手动创建worker并添加sourceOption后遇到编译问题,可能是由于sourceOption的配置不正确或者与当前项目环境不兼容所致。以下是几个可能的解决方向:

  1. 检查sourceOption格式:确保sourceOption的格式符合HarmonyOS的要求,包括但不限于路径、依赖项和编译选项的正确性。

  2. 核对worker定义:验证worker的定义是否符合HarmonyOS的规范,包括worker的名称、入口函数和所需的权限等。

  3. 依赖库版本:检查项目中使用的依赖库是否与HarmonyOS版本兼容,有时版本不匹配会导致编译失败。

  4. 编译脚本:查看编译脚本(如build.json或相关配置文件),确保worker的编译指令正确无误,并且sourceOption被正确引用。

  5. 清理缓存:尝试清理项目缓存和重新编译,有时候旧的编译缓存可能导致编译失败。

  6. 查阅官方文档:详细阅读HarmonyOS官方文档中关于worker创建和sourceOption配置的部分,确保所有设置均符合官方指导。

如果以上步骤仍然无法解决问题,可能是由于特定项目配置或代码问题。此时,建议直接联系官网客服获取更专业的帮助。官网地址是:https://www.itying.com/category-93-b0.html

回到顶部