未验证 提交 79163b82 编写于 作者: O openharmony_ci 提交者: Gitee

!16420 优化hsp资料描述

Merge pull request !16420 from hwyml/xbw
...@@ -7,12 +7,12 @@ ...@@ -7,12 +7,12 @@
1. 应用间`HSP`的代码会运行再开发者应用的进程中,调用相关代码时,需要做好异常捕获与容错处理,防止由于应用间`HSP`功能异常导致的稳定性问题。 1. 应用间`HSP`的代码会运行再开发者应用的进程中,调用相关代码时,需要做好异常捕获与容错处理,防止由于应用间`HSP`功能异常导致的稳定性问题。
2. 一个应用可以同时依赖多个应用间`HSP` 2. 一个应用可以同时依赖多个应用间`HSP`
3. 应用间`HSP`会影响开发者应用自身的启动时间,依赖过多的应用间`HSP`可能会导致启动时延发生明显的劣化,建议将依赖的数目控制在16个以内。 3. 应用间`HSP`会影响开发者应用自身的启动时间,依赖过多的应用间`HSP`可能会导致启动时延发生明显的劣化,建议将依赖的数目控制在16个以内。
4. 当前三方开发者开发者只能使用系统提供的应用间`HSP`,不支持开发并发布自己的应用间`HSP` 4. 应用间`HSP`安装时需要对特权权限进行校验,如果想要开发应用间`HSP`,需要配置allowAppShareLibrary应用特权,具体配置方式参考[应用特权配置指南](../../device-dev/subsystems/subsys-app-privilege-config-guide.md)
## 应用间HSP的使用 ## 应用间HSP的使用
应用间HSP会分为两部分对外发布: 应用间HSP会分为两部分对外发布:
一部分为[HAR](har-package.md)这部分`HAR`中不会包含具体的功能实现代码,而仅仅包含导出的对象与方法,所以体积很小。应用开发者将`HAR`集成到自身的工程中,然后就可以通过调用`HAR`中提供的对象与方法完成自身的应用功能。 一部分为[HAR](har-package.md)`HAR`包中不会包含具体的功能实现代码,而仅仅包含导出的对象与方法,所以体积很小。应用开发者将`HAR`包集成到自身的工程中,然后就可以通过调用`HAR`中提供的对象与方法完成自身的应用功能。
另外一部分为HSP,这部分为应用间`HSP`的具体实现,里面包含js/ts代码、C++库、资源和配置文件。这部分会上架到应用市场或者集成到系统版本中。 另外一部分为HSP,这部分为应用间`HSP`的具体实现,里面包含js/ts代码、C++库、资源和配置文件。这部分会上架到应用市场或者集成到系统版本中。
...@@ -23,7 +23,7 @@ src ...@@ -23,7 +23,7 @@ src
├── main ├── main
| └── module.json5 | └── module.json5
├── index.d.ets ├── index.d.ets
└── package.json └── oh-package.json5
``` ```
`index.d.ets`内容样例如下: `index.d.ets`内容样例如下:
```ts ```ts
...@@ -117,7 +117,7 @@ extern "C" __attribute__((constructor)) void RegisterLibaModule(void) { ...@@ -117,7 +117,7 @@ extern "C" __attribute__((constructor)) void RegisterLibaModule(void) {
} }
``` ```
### 使用HAR导出的能力 ### 使用HAR导出的能力
引用`HAR`前,需要先配置对`HAR`的依赖,配置方式可参考[文档](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ohos-development-npm-package-0000001222578434#section89674298391)`HAR`配置成功后,在配置模块的`module.json`中会生成相关依赖项信息,如下所示: 引用`HAR`前,需要先配置对`HAR`的依赖,配置方式可参考[文档](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ohos-development-npm-package-0000001222578434#section89674298391)`HAR`配置成功后,在配置模块的`module.json5`中会生成相关依赖项信息,如下所示:
```json ```json
"dependencies": [ "dependencies": [
{ {
......
...@@ -27,7 +27,7 @@ artifactType字段有以下两种取值,默认缺省为original。 ...@@ -27,7 +27,7 @@ artifactType字段有以下两种取值,默认缺省为original。
- Stage模型的HAR,不能引用AppScope内的内容。在编译构建时APPScope中的内容不会打包到HAR中,导致HAR资源引用失败。 - Stage模型的HAR,不能引用AppScope内的内容。在编译构建时APPScope中的内容不会打包到HAR中,导致HAR资源引用失败。
## 导出HAR的ArkUI组件、接口、资源 ## 导出HAR的ArkUI组件、接口、资源
index.ets文件是HAR导出声明文件的入口,HAR需要导出的接口,统一在index.ets文件中导出。index.ets文件是DevEco Studio默认自动生成的,用户也可以自定义,在模块的package.json文件中的main字段配置入口声明文件,配置如下所示: index.ets文件是HAR导出声明文件的入口,HAR需要导出的接口,统一在index.ets文件中导出。index.ets文件是DevEco Studio默认自动生成的,用户也可以自定义,在模块的oh-package.json5文件中的main字段配置入口声明文件,配置如下所示:
```json ```json
{ {
"main": "index.ets" "main": "index.ets"
......
...@@ -15,7 +15,7 @@ library ...@@ -15,7 +15,7 @@ library
│ │ └── index.ets │ │ └── index.ets
│ ├── resources │ ├── resources
│ └── module.json5 │ └── module.json5
└── package.json └── oh-package.json5
``` ```
模块`module.json5`中的`"type"`标识模块类型,`HSP``"type"``"shared"` 模块`module.json5`中的`"type"`标识模块类型,`HSP``"type"``"shared"`
```json ```json
...@@ -24,7 +24,7 @@ library ...@@ -24,7 +24,7 @@ library
} }
``` ```
`HSP`通过在入口文件中导出接口,对外提供能力。入口文件在模块`package.json``"main"`中配置。例如: `HSP`通过在入口文件中导出接口,对外提供能力。入口文件在模块`oh-package.json5``"main"`中配置。例如:
```json ```json
{ {
"main": "./src/main/ets/index.ets" "main": "./src/main/ets/index.ets"
...@@ -103,9 +103,9 @@ export { nativeMulti } from './utils/nativeTest' ...@@ -103,9 +103,9 @@ export { nativeMulti } from './utils/nativeTest'
``` ```
## 使用应用内HSP ## 使用应用内HSP
要使用`HSP`中的接口,首先需要在使用方的`package.json`中配置对它的依赖。如果应用内`HSP`和使用方在同一工程下,可以直接本地引用,例如: 要使用`HSP`中的接口,首先需要在使用方的`oh-package.json5`中配置对它的依赖。如果应用内`HSP`和使用方在同一工程下,可以直接本地引用,例如:
```json ```json
// entry/src/main/module.json5 // entry/oh-package.json5
"dependencies": { "dependencies": {
"library": "file:../library" "library": "file:../library"
} }
......
...@@ -63,6 +63,7 @@ OpenHarmony提供通用的应用特权和可由设备厂商针对不同设备单 ...@@ -63,6 +63,7 @@ OpenHarmony提供通用的应用特权和可由设备厂商针对不同设备单
| allowAbilityExcludeFromMissions | bool | false| 是否允许Ability不在任务栈中显示。 | | allowAbilityExcludeFromMissions | bool | false| 是否允许Ability不在任务栈中显示。 |
| allowAppUsePrivilegeExtension | bool | false|是否允许应用使用ServiceExtension、DataExtension。 | | allowAppUsePrivilegeExtension | bool | false|是否允许应用使用ServiceExtension、DataExtension。 |
| allowFormVisibleNotify | bool | false| 是否允许桌面卡片可见。 | | allowFormVisibleNotify | bool | false| 是否允许桌面卡片可见。 |
| allowAppShareLibrary | bool | false | 是否允许为其它应用提供[应用间`HSP`](../../application-dev/quick-start/cross-app-hsp.md)能力。
### 配置方式 ### 配置方式
...@@ -90,6 +91,7 @@ OpenHarmony提供通用的应用特权和可由设备厂商针对不同设备单 ...@@ -90,6 +91,7 @@ OpenHarmony提供通用的应用特权和可由设备厂商针对不同设备单
"allowAbilityExcludeFromMissions": true, // 允许Ability不在任务栈中显示 "allowAbilityExcludeFromMissions": true, // 允许Ability不在任务栈中显示
"allowAppUsePrivilegeExtension": true, // 允许应用使用ServiceExtension、DataExtension "allowAppUsePrivilegeExtension": true, // 允许应用使用ServiceExtension、DataExtension
"allowFormVisibleNotify": true // 允许桌面卡片可见 "allowFormVisibleNotify": true // 允许桌面卡片可见
"allowAppShareLibrary": true // 允许应用提供应用间HSP能力
}, },
} }
``` ```
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册