目录

IDE编译报错SDK component missing问题排查

Q:写好的脚本,在流水线中可以运行,但是放在IDE的Terminal中,无法编译,报错:

> hvigor ERROR: SDK component missing. Please verify the integrity of your SDK.

A:此报错表示SDK路径已配置,但是路径里面没有找到SDK。

方案一:版本兼容性问题。
  1. 开发工具IDE的SDK版本与Command Line Tools的hvigor版本不兼容。
    • 按照官网文档在流水线配置command-line-tools,不配置环境变量DEVECO_SDK_HOME,编译的时候会自动找到command-line-tools的SDK;如果配置了DEVECO_SDK_HOME,就优先找DEVECO_SDK_HOME指向的。
    • IDE的Terminal在打开的时候会注入环境变量DEVECO_SDK_HOME,指向的是IDE里的SDK。

    在流水线中跑脚本,使用的是command-line-tools的SDK,与hvigor的版本配套;但是在IDE的Terminal中跑脚本,hvigor用的是command-line-tools里的版本,SDK用的是IDE里的版本,两者不匹配,故导致报错。

    安装相同Build Version的command-line-tools与IDE即可解决问题。

  2. IDE错误的使用其他版本的hvigor。
    1. 查看当前报错日志的首行,确认调用的hvigorw.js是否在当前IDE所在目录中。

    2. 若非当前IDE所在目录,点击下图任一按钮,选择编辑配置。

    3. 选中Hvigor下的配置,配置JavaScript file:当前IDE根目录/tools/hvigor/bin/hvigorw.js。

    4. 将hvigor-config.json和oh-package.json5中的modelVersion修改为当前版本。

方案二:环境配置问题。

通过以下步骤进行排查。
  1. 找到SDK所在目录,在IDE的Terminal中输入echo $env:DEVECO_SDK_HOME,路径应为:“IDE安装路径/sdk”,SDK根目录不要指向default目录或OpenHarmony下载目录。

  2. 检查SDK路径下的文件放置顺序是否正确。检查各文件、目录是否有缺失,如有缺失,请将对应的文件补齐。确保这些文件和文件夹的名称都是正确的并存在,目录结构如下:

  3. 检查sdk-pkg.json文件是否与IDE配套:
    • 在替换full SDK时可能会修改sdk-pkg.json文件的内容,导致该文件内容与IDE版本不配套(如非必要,请在替换full SDK时不要修改此文件)。
    • 打开sdk-pkg.json文件,查看apiVersion字段是否与IDE支持的API匹配,两者必须要相同,否则就会出现找不到SDK的错误。

  4. 如果上面几步都无效,检查工程是否做了一体化适配:
    • 执行同步工程的操作。

    • 观察右侧Notifications中是否出现了Sync failed的提示。

    • 点击提示语中的Migrate Assistant,工程下方会打开Migrate Assistant的窗口,点击里面的Migrate按钮,待执行成功后再去编译。

  5. 检查工程是否配置了hvigor版本:

    如果有,需要删除,因为目前都是使用一体化的版本,版本自带有hvigor工具。删除之后重新同步工程。

Q:使用高版本API, Command Line Tools工具(最新版本)打包报错:hvigor ERROR:00303168 Configuration Error?

A:是因为SDK版本低导致的,需要将build-profile.json5文件里面compatibleSdkVersion字段删除或者将字段后面的API18改成19,就能成功打包。