尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【HarmonyOS】鸿蒙应用子模块module资源如何获取
在多模块的鸿蒙应用中获取子模块HAR/HSP的资源主要有三种方式。从API 12开始官方推荐的语法是$r([模块名].type.name)和$rawfile([模块名].filename)这让跨模块资源的访问变得和访问本模块资源一样直观。下面整理了三种主流方案你可以根据实际情况选择。方案一使用$r/$rawfile直接引用推荐这是从 API 12 开始支持的语法写法最简洁也最符合直觉。ts// 引用 HSP/HAR 模块中的字符串资源 Text($r([hsp_module_name].string.test_string)) .fontSize($r([hsp_module_name].float.font_size)) .fontColor($r([hsp_module_name].color.font_color)) // 引用 HSP/HAR 模块 rawfile 目录下的图片资源 Image($rawfile([hsp_module_name].icon.png))关键点[模块名]必须是方括号括起来且与oh-package.json5中定义的模块名完全一致。如果rawfile下有多层目录需要从rawfile后面的第一个目录开始写例如$rawfile([hsp].oneFile/twoFile/icon.png)。注意使用这种方式编译器无法在编译时校验资源是否存在需要开发者自行确保资源在对应模块中。方案二通过createModuleContext创建上下文获取如果需要通过代码动态获取或需要更精细地控制资源加载可以使用createModuleContext接口来获取指定模块的Context然后通过ResourceManager来获取资源。注意getContext(this).createModuleContext()从API Version 12开始废弃推荐使用application.createModuleContext替代。tsimport { application, common } from kit.AbilityKit; import { BusinessError } from kit.BasicServicesKit; try { // 1. 通过 application 创建子模块的 Context (API 12) const moduleContext await application.createModuleContext(this.context, 模块名); // 2. 通过这个 Context 获取资源 const stringRes await moduleContext.resourceManager.getStringByNameSync(app.string.xxx); const rawFd await moduleContext.resourceManager.getRawFd(test.mp3); } catch (error: BusinessError) { // 处理获取失败的情况 }说明这种方式本质上是为不同模块创建了一个独立的上下文环境从而允许你通过它去访问该模块独有的资源目录。方案三封装资源管理类导出这是一种比较经典的工程化方案。在子模块中定义一个类将资源以Resource类型的形式封装好并导出其他模块通过调用这个类的方法来获取资源。1. 在子模块如hsp_library中封装ts// hsp_library/src/main/ets/ResManager.ets export class HspResManager { // 封装图片资源 static getAppIcon(): Resource { return $r(app.media.app_icon); } // 封装字符串资源 static getAppDesc(): Resource { return $r(app.string.shared_desc); } }ts// hsp_library/Index.ets export { HspResManager } from ./src/main/ets/ResManager;2. 在使用方模块如entry中调用tsimport { HspResManager } from hsp_library; // 使用 Text(HspResManager.getAppDesc()) .fontSize(20) Image(HspResManager.getAppIcon()) .height(100)优点编译时检查、代码提示完善、资源归属清晰。 资源覆盖与优先级规则当多个模块定义了同名资源时遵循以下覆盖规则优先级从高到低当前 HAP 包自身模块。直接依赖的 HAR 模块。如果依赖了多个 HAR按照oh-package.json5中dependencies的声明顺序前面的优先级高于后面的。传递依赖的 HAR 模块。小技巧为了避免资源被意外覆盖可以为不同模块的资源添加命名前缀例如moduleA_primary_color。
RELATED

相关推荐

大模型微调实战:从LoRA到QLoRA的完整流程与避坑指南

大模型微调实战:从LoRA到QLoRA的完整流程与避坑指南

1. 先搞清楚大模型微调到底解决什么实际问题大模型微调不是让模型从零开始学习,而是在已有能力基础上做定向优化。最常见的场景是你有一个通用大模型,但需要它在特定领域表现更好——比如让模型更懂医疗问答、更擅长代码生成、或者更符合你公司的对话风格…

📅 2026/9/11 21:49:43
收藏必备!小白程序员也能快速上手学习大模型,打造智能病历生成神器

收藏必备!小白程序员也能快速上手学习大模型,打造智能病历生成神器

本文深入剖析了医疗领域病历书写与管理的痛点,如效率低下、质量参差不齐、合规风险等。方案融合语言大模型、NLP、医疗知识图谱等先进技术,构建全流程智能病历辅助生成服务体系。文章详细阐述了其核心功能,包括数据采集、智能生成、质量校验、…

📅 2026/8/20 20:33:05
PixWorld:像素空间统一实现3D场景生成与重建的技术解析

PixWorld:像素空间统一实现3D场景生成与重建的技术解析

如果你正在为3D场景生成项目头疼——无论是游戏开发、虚拟现实内容制作,还是建筑可视化,可能都经历过这样的困境:传统方法要么依赖复杂的多阶段流程,生成效果粗糙;要么因为中间表示(如体素、点云或隐式神经…

📅 2026/8/20 20:33:05
MORE NEWS

更多资讯

📰

OpenMontage 视频翻译指南:基于 HeyGen /v2/video_translate 的多语言配音与口型同步实战

OpenMontage 视频翻译指南:基于 HeyGen /v2/video_translate 的多语言配音与口型同步实战 【免费下载链接】OpenMontage Worlds first open-source, agentic video production system. 12 production pipelines, 100 tools, 700 agent skill and production-knowled…

📰

模拟退火算法求解火电经济调度问题的Matlab实现

简介:这是一份基于Matlab实现的模拟退火算法求解电力经济调度问题的代码资源包。面向计算机、电子信息工程、数学等专业学生及电力系统优化研究人员,可用于课程设计、期末大作业或毕业设计中的调度仿真实验。包内共5个文件,包含3个M源程序、1…

📰

RH850/F1L启动流程与CAN寄存器级开发实战

简介:本资源是面向汽车电子开发工程师与嵌入式初学者的RH850/F1L微控制器实战入门套件,聚焦瑞萨RH850系列在车身控制、安全系统等车规级场景的应用落地。压缩包含123个文件,总大小215.53MB,涵盖14个C源码与14个头文件(…

📰

康托尔与戴德金:集合论创立之争与数学史悬案

1. 数学史上的悬案:康托尔与戴德金的世纪之争1899年,格奥尔格康托尔在给理查德戴德金的最后一封信中写下:"我关于无穷的理论,其种子早已在你我三十年前的对话中萌芽。"这封被遗忘在哥廷根大学档案室角落的信件&#xff…

📰

OpenCV+PyQt5实战:构建一套完整的人脸识别门禁系统

简介:面向需快速搭建人脸识别门禁系统的开发者,这是一份基于OpenCV与PyQt5的Python完整项目源码,解决特定人脸识别开门、管理员登录、人脸录入与训练等常见需求,适合计算机视觉入门及中级学习者。压缩包共2个文件,核心…

📰

Carbon 语言包声明语法统一提案解读:`package`/`library` 声明中 `impl` 修饰符前置与 `api` 关键字移除

Carbon 语言包声明语法统一提案解读:package/library 声明中 impl 修饰符前置与 api 关键字移除 【免费下载链接】carbon-lang Carbon Languages main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental;…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬