【HarmonyOS Next】 鸿蒙应用useNormalizedOHMUrl详解

【HarmonyOS Next】 鸿蒙应用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后,会导致编译报错,需要整改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/72043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wav格式的音频压缩,WAV 转 MP3 VBR 体积缩减比为 13.5%、多个 MP3 格式音频合并为一个、文件夹存在则删除重建,不存在则直接建立

🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录 问题一:wav格式的音频压缩为哪些格式,网络传输给用户播放…

MFC线程

创建线程 HANDLE m_hThread; m_hThread CreateThread(NULL, 0, save_snapshot, (LPVOID)this, 0, &iThreadId);开启线程循环等待 DWORD WINAPI save_snapshot(LPVOID pVoid) {while (true){//持续循环等待事件到达。接收到事件信号后才进入if。if (::WaitForSingleObjec…

赋能农业数字化转型 雏森科技助力“聚农拼”平台建设

赋能农业数字化转型,雏森科技助力“聚农拼”平台建设 在数字化浪潮席卷各行业的今天,农业领域也在积极探索转型升级之路。中农集团一直以“根植大地,服务三农”为核心,以“乡村振兴,农民增收”为目标,及时…

千峰React:Hooks(上)

什么是Hooks ref引用值 普通变量的改变一般是不好触发函数组件的渲染的,如果想让一般的数据也可以得到状态的保存,可以使用ref import { useState ,useRef} from reactfunction App() {const [count, setCount] useState(0)let num useRef(0)const h…

Ubuntu20.04安装Redis

1.切换到root用户 如果没有切换到root用户的,切换到root用户。 2.使用 apt install redis 安装redis 遇到y/n直接y即可。 redis安装好之后就自动启动起来了,因此我们可以通过netstat -anp | grep redis命令来查看是否安装成功。 6379是Redis的默认端…

鸿蒙-AVPlayer

compileVersion 5.0.2(14) 音频播放 import media from ohos.multimedia.media; import common from ohos.app.ability.common; import { BusinessError } from ohos.base;Entry Component struct AudioPlayer {private avPlayer: media.AVPlayer | nu…

机器学习数学通关指南——泰勒公式

前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 一句话总结 泰勒公式是用多…

游戏引擎学习第124天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾/复习 今天是继续完善和调试多线程的任务队列。之前的几天,我们已经介绍了多线程的一些基础知识,包括如何创建工作队列以及如何在线程中处理任务。今天,重点是解决那些我们之前没有注意到…

在MacOS上打造本地部署的大模型知识库(一)

一、在MacOS上安装Ollama docker run -d -p 3000:8080 --add-hosthost.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main 最后停掉Docker的ollama,就能在webui中加载llama模…

(八)Java-Collection

一、Collection接口 1.特点 Collection实现子类可以存放多个元素,每个元素可以是Object; 有些Collection的实现类,可以存放重复的元素,有些不可以; 有些Collection的实现类,有些是有序的(Li…

大模型RAG(检索增强)创新--SELF-RAG

检索增强生成 (RAG) 提供了一种将 ChatGPT/GPT-4 等大型语言模型与自定义数据集成的途径,但存在局限性。让我们看看 RAG 最近的研究是如何解决一些问题。 大语言模型(LLM)将改变整个金融领域。其中一个场景是大语言模型可以学习大量文档,并在很短的时间内…

《AI和人工智能和编程日报》

OpenAI:将深度研究扩展到 ChatGPT Plus、Team、Edu 和 Enterprise 用户,每月 10 次查询;Pro 用户每月有 120 次查询,ChatGPT 语音模式向免费用户开放。DeepSeek:R1 大模型宣布降价,调用价格将至四分之一&am…

【音视频】编解码相关概念总结

NALU RTP PS流 三者总体关系 NALU在RTP中的应用:视频流的RTP传输通常将NALU作为基本的单元进行传输。每个RTP包携带一个或多个NALU,这些NALU包含了视频编码数据。RTP协议通过其头部信息(如时间戳、序列号等)帮助接收端重新排列和…

端口映射/内网穿透方式及问题解决:warning: remote port forwarding failed for listen port

文章目录 需求:A机器是内网机器,B机器是公网服务器,想要从公网,访问A机器的端口方式:端口映射,内网穿透,使用ssh打洞端口:遇到问题:命令执行成功,但是端口转发…

11特殊函数

一、递归函数 递归概念:如果一个函数内部,包含了对自身的调用,则该函数称为递归函数。要点: 只有能被表达为递归的问题,才能用递归函数解决。递归函数必须有一个可直接退出的条件,否则会进入无限递归。递归…

如何使用useContext进行全局状态管理?

在 React 中,使用 useContext 进行全局状态管理是一种有效的方法,尤其在需要在多个组件之间共享状态时。useContext 允许你在组件树中传递数据,而无需通过每个组件的 props 逐层传递。以下是关于如何使用 useContext 进行全局状态管理的详细指…

鸿蒙 ArkUI 实现敲木鱼小游戏

敲木鱼是一款具有禅意的趣味小游戏,本文将通过鸿蒙 ArkUI 框架的实现代码,逐步解析其核心技术点,包括动画驱动、状态管理、音效震动反馈等。 一、架构设计与工程搭建 1.1 项目结构解析 完整项目包含以下核心模块: ├── entry…

神经性肺纤维的预防方法

神经性肺纤维的预防方法 一、引言 神经性肺纤维化是一种慢性进行性肺部疾病,其病因复杂,包括遗传、环境等多种因素。该病不仅影响患者的呼吸功能,还可能对神经系统造成损害。因此,预防神经性肺纤维化显得尤为重要。本文将详细介…

azure sql 网络安全组 网络安全sql注入

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 SQL注入 1、原理 针对注入的攻击行为可描述为通过用户可控参数中注入SQL语法,破坏原有SQL结构,达到编写程序意料之外结果的攻击行为。 其…

【Day50 LeetCode】图论问题 Ⅷ

一、图论问题 Ⅷ 1、dijkstra算法 堆优化 采用堆来优化&#xff0c;适合节点多的稀疏图。代码如下&#xff1a; # include<iostream> # include<vector> # include<list> # include<queue> # include<climits>using namespace std;class myco…