HarmonyOS鸿蒙Next中IDE报错:not supported when useNormalizedOHMUrl is not true.

HarmonyOS鸿蒙Next中IDE报错:not supported when useNormalizedOHMUrl is not true. 集成三方库编译时,IDE提示报错信息如下:

cke_393.png

该问题应该如何解决?请提供详细的操作步骤


更多关于HarmonyOS鸿蒙Next中IDE报错:not supported when useNormalizedOHMUrl is not true.的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

一、结论

hvigor ERROR: Bytecode HARs: [@cashier_alipay/cashiersdk] not supported when useNormalizedOHMUrl is not true.

  • Try the following:

Please check useNormalizedOHMUrl in the project-level build-profile.json5 file.

hvigor ERROR: Failed :entry:default@GenerateLoaderJson… hvigor ERROR: BUILD FAILED in 1 s 56 ms


hvigor错误:当useNormalizedOHMUrl不为true时,不支持字节码HARs:[@cashier_alipay/cashiersdk]。 -尝试以下操作: 请检查项目级build-profile.json5文件中使用的Normalized OHMUrl。

该问题详细原理,参见:useNormalizedOHMUrl有什么作用?分别在什么场景下进行设置?-华为开发者问答 | 华为开发者联盟

二、解决方案

在项目根节点的编译配置build_profile.json5中,添加 caseSensitiveCheck useNormalizedOHMUrl 为true

"products": [
      {
        "name": "default",
        "signingConfig": "default",
        "compatibleSdkVersion": "5.0.0(12)",
        "runtimeOS": "HarmonyOS",
        "buildOption": {
          "strictMode": {
            "caseSensitiveCheck": true,
            "useNormalizedOHMUrl": true
          }
        }
      }
    ],

cke_4271.png

更多关于HarmonyOS鸿蒙Next中IDE报错:not supported when useNormalizedOHMUrl is not true.的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


该报错源于HarmonyOS Next中IDE的URL标准化配置问题。当useNormalizedOHMUrl参数未设置为true时,系统不支持当前操作。需在IDE配置或项目设置中启用URL标准化功能。检查相关配置文件,确保useNormalizedOHMUrl参数正确配置为true即可解决。

这个错误通常是由于在 oh-package.json5 文件中,三方库的 devDependencies 配置项缺少了关键的 "useNormalizedOHMUrl": true 参数导致的。

根本原因: 在 HarmonyOS Next 中,为了确保三方库的路径解析和模块加载正确,当通过 ohpm 安装带有 devDependencies 的库时,需要在配置中显式声明使用标准化的 OHM(OpenHarmony Module)URL。

解决方案:

请按照以下步骤检查和修改你的工程配置:

  1. 定位配置文件: 打开你的 HarmonyOS 应用工程根目录,找到 oh-package.json5 文件。

  2. 编辑配置文件:oh-package.json5 文件中,找到 "devDependencies" 字段。你需要在该字段内,为你正在集成的、导致报错的三方库添加 "useNormalizedOHMUrl": true 参数。

    修改示例: 假设你集成的库名为 "@example/my-library",修改前可能类似这样:

    "devDependencies": {
      "@example/my-library": "^1.0.0"
    }
    

    修改后应为:

    "devDependencies": {
      "@example/my-library": {
        "version": "^1.0.0",
        "useNormalizedOHMUrl": true
      }
    }
    

    注意:如果 devDependencies 中已有其他库,请确保只为出现问题的特定库添加此配置,或根据实际情况调整。

  3. 同步项目依赖: 保存 oh-package.json5 文件后,在 IDE 中执行以下操作之一来同步依赖:

    • 点击 IDE 顶部菜单栏的 Build > Refresh Ohpm Packages
    • 或者在项目根目录上右键,选择 HarmonyOS > Refresh Ohpm Packages
  4. 清理并重新编译: 依赖刷新完成后,建议执行 Build > Clean Project 清理项目,然后再次点击 Build > Build HAP(s) 进行编译,检查错误是否已解决。

补充说明:

  • 此配置项 (useNormalizedOHMUrl) 主要作用于开发依赖(devDependencies),用于在开发阶段正确解析模块路径。
  • 如果该三方库是作为运行时依赖(dependencies)引入,通常不需要此配置。请根据报错信息和库的实际用途,确认其是否被正确放置在 devDependencies 中。

完成以上步骤后,IDE 的编译报错应被消除。

回到顶部