Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
61e0c5fe
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
61e0c5fe
编写于
7月 27, 2023
作者:
H
Haoming Luo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加'导出HSP中资源'部分
Signed-off-by:
N
Haoming Luo
<
mzfslhm@163.com
>
上级
11a04c4b
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
57 addition
and
1 deletion
+57
-1
zh-cn/application-dev/quick-start/in-app-hsp.md
zh-cn/application-dev/quick-start/in-app-hsp.md
+57
-1
未找到文件。
zh-cn/application-dev/quick-start/in-app-hsp.md
浏览文件 @
61e0c5fe
...
...
@@ -80,11 +80,67 @@ export struct MyTitleBar {
// library/src/main/ets/index.ets
export
{
MyTitleBar
}
from
'
./components/MyTitleBar
'
```
#### HSP中资源使用说明
### 导出HSP中资源
#### 通过$r访问HSP中资源
注意,在
`HSP`
中,通过
`$r`
/
`$rawfile`
可以使用本模块
`resources`
目录下的资源。
如果使用相对路径的方式,例如:
在
`HSP`
模块中使用
`Image("common/example.png")`
,实际上该
`Image`
组件访问的是
`HSP调用方`
(如
`entry`
)下的资源
`entry/src/main/ets/common/example.png`
。
#### 通过resourceManager访问HSP中资源
先通过当前上下文获取hsp模块的上下文,再获取hsp模块的resourceManager,然后再调用resourceManager的接口获取资源。
注:该方法不推荐使用,因为需要开发者手动维护调用名称与HSP内部的资源名称一致。
```
ts
Button
(
'
getStringValue
'
)
.
onClick
(()
=>
{
getContext
().
createModuleContext
(
'
library
'
).
resourceManager
.
getStringByName
(
"
shared_desc
"
)
.
then
(
value
=>
{
console
.
log
(
"
getStringByName value is
"
+
value
);
})
.
catch
(
error
=>
{
console
.
log
(
"
getStringByName promise error is
"
+
error
);
});
})
.
width
(
"
50%
"
)
```
#### 导出HSP中资源给使用方使用
可以使用一个类来提供对外导出资源的接口,该方案的好处是:
-
HSP开发者可以控制自己需要导出的资源,不需要对外暴露的资源可以不用导出
-
使用方无须感知HSP内部的资源名称
-
HSP内部的资源名称变化时,不需要使用方跟着修改
具体实现如下:
封装对外提供资源的接口类:
```
ts
// library/src/main/ets/ResManager.ets
export
class
ResManager
{
static
getPic
(){
return
$r
(
"
app.media.pic
"
);
}
}
```
在
`index.ts`
中导出该类:
```
ts
// library/src/main/ets/index.ets
export
{
ResManager
}
from
'
./ResManager
'
```
将ResManager导入使用方代码文件:
```
ts
// 使用方
import
{
ResManager
}
from
"
library
"
```
再以
`ResManager.getPic()`
的API获取资源,如下面的Image组件:
```
ts
// 使用方
Image
(
ResManager
.
getPic
())
.
width
(
"
100%
"
)
```
### 导出native方法
在
`HSP`
中也可以包含
`C++`
编写的
`so`
。对于
`so`
中的
`native`
方法,
`HSP`
通过间接的方式导出,以导出
`libnative.so`
的乘法接口
`multi`
为例:
```
ts
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录