【鸿蒙实战开发】基于HAR的跨模块C++头文件引用

场景描述

多个模块使用同一份C++代码是App开发中很常见的问题,比如多个模块使用同一个自研的加解密库、集成三方开源SO库暴露其中的C++代码等。以下列举跨调用C++方法的典型场景:

场景:模块A引用模块B的C++接口

方案描述:

如图所示,通过5个步骤实现,desHar引用srcHar的C++接口:

源码及详细说明:

1、将需要导出的C++头文件放至srcHar模块下的固定目录

首先需要在srcHar/src/main/cpp目录下新建include目录

// srcHar/src/main/cpp/include/test.h

// 此处将头文件放置include目录下

int add(int a,int b)

2、在srcHar模块的build-profile.json5中配置C++头文件的目录

// srcHar/build-profile.json5

{

"apiType": "stageMode",

"buildOption": {

"nativeLib": {

"headerPath": "src/main/cpp/include"

},

"externalNativeOptions": {...},

},

"buildOptionSet": [...],

"targets": [...]

}

使用add_library将test.cpp内的C++代码打到名称为srcHar的so库中。

// srcHar/src/main/cpp/CMakeLists.txt

add_l
<think>好的,用户的问题是关于鸿蒙开发HAR模块如何处理图片资源引用。我需要结合提供的引用内容来回答。首先,用户提到的引用[2]和[3]是关键,因为里面详细说明了HAR的资源和限制。 首先,HAR模块可以包含资源文件,包括图片,这点在引用[2]里提到。接下来,用户想知道如何正确引用这些图片资源。根据引用[2],HAR模块的图片资源需要放在特定的资源目录下,比如"resources/base/media",然后通过模块名、资源类型和名称来访问,格式是$r('app.moduleName.type.name')。比如,模块名是hsp,图片放在media目录下,名为icon.png,那么路径就是$r('app.hsp.media.icon')。 另外,需要注意HAR的一些限制。比如,引用[3]提到,如果HAR开启了混淆,资源ID会变成-1,这时候不能使用ResourceManager通过ID获取资源,所以必须用命名引用的方式。同时,引用[2]还指出HAR不能引用AppScope的资源,所以图片必须放在HAR自己的资源目录里。 用户可能需要知道实际操作的步骤,比如如何创建目录结构,如何正确编写引用代码。还要提醒他们避免常见的错误,比如混淆后的处理,以及不能使用AppScope的资源。总结起来,回答需要涵盖资源存放位置、引用方法、注意事项,并结合实际例子说明。</think>在鸿蒙HarmonyOS开发中,HAR模块的图片资源引用需遵循以下规范和方法: ### 一、图片资源存放与引用步骤 1. **资源目录规范** 将图片资源放置在HAR模块的`resources > base > media`目录下,例如: ```lua resources └── base └── media └── icon.png ``` 2. **资源引用语法** 使用**$r('app.moduleName.type.name')**格式访问资源: ```typescript // 示例:HAR模块名为hsp,图片名称为icon.png Image($r('app.hsp.media.icon')) ``` ### 二、关键注意事项 1. **混淆兼容性** HAR开启混淆后需使用**命名引用**而非ID访问资源,否则会因资源ID变为-1导致失败[^3]。 2. **跨模块限制** - 禁止引用主模块`AppScope`中的资源[^2] - 不支持通过`ResourceManager.getResource`等ID相关API获取资源[^3] 3. **编译特性** 未开启混淆时编译产物为源码文件,开启后生成优化后的二进制文件。 ### 三、典型错误场景 ```typescript // 错误示例:直接使用相对路径 Image('common/icon.png') // 编译报错 // 正确示例:通过资源管理器引用 Image($r('app.hsp.media.icon')) ``` ### 四、扩展应用场景 通过HAR可集中管理多模块共用的图标、背景图等资源,配合OHPM私仓实现企业级组件库的图片资源标准化管理[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值