Name Date Size

..25-Oct-20244 KiB

AppScope/H25-Oct-20244 KiB

build-profile.json5H A D25-Oct-20241.3 KiB

entry/H25-Oct-20244 KiB

hvigor/H25-Oct-20244 KiB

hvigorfile.tsH A D25-Oct-2024159

hvigorwH A D25-Oct-20242.1 KiB

hvigorw.batH A D25-Oct-20242.1 KiB

library/H25-Oct-20244 KiB

oh-package.json5H A D25-Oct-2024868

ohosTest.mdH A D25-Oct-20242.1 KiB

README_zh.mdH A D25-Oct-20244.7 KiB

screenshots/H25-Oct-20244 KiB

README_zh.md

1# HSP
2
3### 介绍
4
5HSP(Harmony Shared Package)是动态共享包,按照使用场景可以分为应用内HSP和应用间HSP。应用内HSP指的是专门为某一应用开发的HSP,只能被该应用内部其他HAP/HSP使用,用于应用内部代码、资源的共享。应用内HSP跟随其宿主应用的APP包一起发布,与宿主应用同进程,具有相同的包名和生命周期。
6
7>**说明**
8>
9>由于当前不支持应用间HSP,这里提到的HSP特指应用内HSP。
10
11### 效果预览
12
13| 主页                               | **资源引用页面**    | **路由跳转页面**          |
14|----------------------------------|-------------------------------------------|-------------------------------------------|
15| ![](screenshots/home.png) | ![](screenshots/example.png) | ![](screenshots/router.png) |
16| **路由返回页面** |  |  |
17| ![](screenshots/back.png) |  |  |
18
19使用说明:
20
211.启动HspSample(动态共享包)应用,首页正常显示所引用HSP的ArkUI组件、接口、资源。
22
232.点击主页"引用HSP的ts类和方法"按钮,正确引用HSP的ts类和方法,页面Hello World字段变更为result: 3。
24
253.点击主页"引用HSP中的资源"按钮,正确引用HSP中的资源,页面Hello World字段变更为getStringValue is shared。
26
274.点击主页"引用HSP导出的native方法"按钮,正确引用HSP导出的native方法,页面Hello World字段变更为result: 12。
28
295.点击主页"访问HSP中的资源"按钮,跳转至HSP中Index页面,Index页面正确访问HSP中的资源,显示内容为example.png的图片信息。
30
316.点击主页"页面路由跳转"按钮,正确引用HSP的路由跳转,跳转至menu页面,页面显示内容为:The page is menu。menu页面点击"router to HSP page"按钮,跳转至HSP的新页面,HSP的新页面上点击"back to HSP page"按钮,返回menu页面。
32
337.点击主页"页面路由返回"按钮,正确引用HSP的路由跳转,跳转至新页面,新页面上点击"back to HAP page"按钮,返回至主页。
34
35### 工程目录
36```
37entry/src/main/ets/                 
38|---entryability
39|   └---EntryAbility.ts                   
40|---logger
41|   └---Logger.ts                      // 日志工具
42└---pages
43---Index.ets                      // 首页
44library
45|---src
46|   └---main
47|       |---cpp
48|       |   |---types
49|       |   |---CMakeLists.txt
50|       |   └---hello.cpp
51|       |---ets
52|       |   |---components
53|       |   |   └---MyTitleBar.ets		// ArkUI组件页面
54|       |   |---page
55|       |   |   |---back.ets			// 实现页面路由返回
56|       |   |   |---Index.ets			// 访问HSP中的图片资源
57|       |   |   └---menu.ts
58|       |   └---utils
59|       |       └---nativeTest.ts		// native方法页面
60|       |       └---tset.ts				// ts类和方法页面
61|       |---resources				// 资源文件
62|       └---module.json5
63---oh-package.json5
64```
65
66### 具体实现
67
68* 本示例为HspSample(动态共享包)应用,提供 导出HSP的ArkUI组件、接口、资源功能:
69  * 导出HSP的ArkUI组件、接口、资源,HSP中的资源,源码链接:[index.ets](library/src/main/ets/Index.ets)
70    * HSP中MyTitleBar.ets文件的ArkUI组件,源码链接:[MyTitleBar.ets](library/src/main/ets/components/MyTitleBar.ets)
71    * HSP中test.ts文件的ts类和方法,源码链接:[test.ts](library/src/main/ets/utils/test.ts)
72    * HSP中nativeTest.ts文件的native方法。在HSP中也可以包含C++编写的so,对于so中的native方法,HSP通过间接的方式导出,如导出libnative.so的乘法接口multi,源码链接:[nativeTest.ts](library/src/main/ets/utils/nativeTest.ts)
73    * 通过$r访问HSP中的资源,源码链接:[Index.ets](library/src/main/ets/pages/Index.ets)
74    * HSP中的资源管理类,跨包访问HSP内资源时,推荐实现一个资源管理类,以封装对外导出的资源,源码链接:[ResManager.ets](library/src/main/ets/ResManager.ets)
75  * 引用HSP的ArkUI组件、接口、资源
76    * 在使用方中,引用HSP的ArkUI组件、接口、资源及 页面路由跳转,源码链接:[index.ets](entry/src/main/ets/pages/Index.ets)
77
78### 相关权限
79
80不涉及。
81
82### 依赖
83
84不涉及。
85
86### 约束与限制
87
881.本示例仅支持标准系统上运行,支持设备:RK3568。
89
902.本示例为Stage模型,支持API11版本SDK,SDK版本号(API Version 11 Canary1)。
91
923.本示例需要使用DevEco Studio版本号(3.1 Release)及以上版本才可编译运行。
93
94### 下载
95
96如需单独下载本工程,执行如下命令:
97
98```
99git init
100git config core.sparsecheckout true
101echo code/DocsSample/BundleManagerDocsSample/HspSample/ > .git/info/sparse-checkout
102git remote add origin https://gitee.com/openharmony/applications_app_samples.git
103git pull origin master
104```
105
106