【HarmonyOS Next】 共享HSP和应用内HSP,useNormalizedOHMUrl详解

举报
GeorgeGcs 发表于 2025/03/24 23:50:30 2025/03/24
【摘要】 【HarmonyOS Next】共享HSP和应用内HSP,useNormalizedOHMUrl详解 一、useNormalizedOHMUrl是什么?useNormalizedOHMUrl指的是是否使用标准化OHMUrl拼接。在开发过程中,需要根据不同的环境或配置动态生成 URL。例如,在加载一些远程模块或者资源时,可能需要将基础 URL 和具体的资源路径进行拼接,并且要确保生成的 UR...

【HarmonyOS Next】共享HSP和应用内HSP,useNormalizedOHMUrl详解

一、useNormalizedOHMUrl是什么?

useNormalizedOHMUrl指的是是否使用标准化OHMUrl拼接。

在开发过程中,需要根据不同的环境或配置动态生成 URL。例如,在加载一些远程模块或者资源时,可能需要将基础 URL 和具体的资源路径进行拼接,并且要确保生成的 URL 格式符合要求,避免出现多余的斜杠、编码问题等。

我们一般将useNormalizedOHMUrl 设置为true的时候。ohmurl使用的是新的拼接和解析方式。

标准化的OHMUrl统一了原有OHMUrl的格式。使用集成态HSP和字节码HAR需使用标准化的OHMUrl格式。

{
  "app": {
    "products": [
      {
         "buildOption": {
           "strictMode": {
             "useNormalizedOHMUrl": true
           }
         }
      }
    ]
  }
}

二、useNormalizedOHMUrl的使用场景

useNormalizedOHMUrl是为了解决HSP存在bundleName和签名的一致性要求,而且在调试阶段需要先安装HSP包,导致多模块集成开发存在很多集成的问题。

例如笔者开发了一个日志HSP,需要给其他公司使用,不可能别的公司应用包名和我的日志HSP包名一致吧?
但是前期HSP是要求bundleName和签名的一致的。

官方为了解决该问题,提供了集成态HSP的方案。

集成态HSP是应用内HSP的一种中间编译产物,目的就是解决使用方的bundleName和签名之间的强耦合问题。

集成态HSP的模块配置:build-profile.json5

{
  "apiType": "stageMode",
  "buildOption": {
    "arkOptions": {
      "integratedHsp": true
    }
  }
}

这就是为什么,集成三方依赖,我们的项目需要添加useNormalizedOHMUrl为true的前因后果了。

并且需要补充的是,HAR字节码包,也需要设置useNormalizedOHMUrl为ture。

关于字节码HAR包,指的是其中包含的是编译后的abc字节码,相比包含源码的HAR和包含js中间码的HAR,可以有效提升应用模块的编译构建效率。

三、useNormalizedOHMUrl的注意事项

  1. useNormalizedOHMUrl 为true的时候ohmurl使用的是新的拼接和解析方式,不能和旧的ohmurl混用,会导致运行时无法识别。

  2. 集成态HSP需要在工程级的build-profile.json5文件中,将useNormalizedOHMUrl字段设置为true。

  3. 从DevEco Studio NEXT Beta1(5.0.3.800)版本开始,当工程级build-profile.json5中useNormalizedOHMUrl配置为true时,noExternalImportByPath缺省默认值为true;当useNormalizedOHMUrl配置为false时,noExternalImportByPath缺省默认值为false。【noExternalImportByPath指的是,是否严格检查绝对路径导入方式和相对路径跨模块导入方式。】

需要格外注意的是,鸿蒙中引用其他依赖模块正确的方式,是通过index中export的导出的接口,来调用模块函数或者类。如果使用的是相对路径的方式导出,在useNormalizedOHMUrl设置为true后,会导致编译报错,需要整改。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。