Lines Matching refs:Part

1 # HPM Part参考
4 本文档将介绍HPM的Part的构成,包类型、划分原则、元数据字段以及相关命令行工具的常用命令等。
7 ### Part划分原则
9 原则上应尽可能划分为细颗粒度的Part,以满足最大限度的复用。主要考虑以下几点:
11 - 独立性:Part的功能应该相对独立,支持独立编译,可以单独对外提供接口和服务;
13 - 耦合性:如果Part必须依赖其他的Part,才能对外提供服务,应考虑和被依赖的Part合并为一个Part
15 - 相关性:如果一组Part共同完成一项功能,且没有被其他Part依赖,未来也没有被依赖的可能,则可以考虑合并为一个Part
18 ### Part类型
20 Part是为复用而生,一切可以复用的部件都可以定义为Part,可以分为:
22 **表1** HPM Part分类
29 | distribution | 以发行版形式分发,依赖其他Part,不包含源码(编译脚本除外),编译输出为系统镜像。 |
34 ### Part构成
36 一个Part包一般包含如下内容:
38 - Part包的代码或库(src目录下的代码文件)
40 - ohos_bundles文件夹(存放依赖的Part,安装Part时自动生成,无需提交到代码库)
42 - Part包的说明文件(README.md)
44 - Part包元数据声明文件(bundle.json)
61 Part的代码文件和普通的代码目录没有差异。但要注意的是,Part中对外暴露的接口(头文件),会被其他Part所引用,需要单独在bundle.json的dirs中声明。
66 为了帮助他人在[DevEco Marketplace](https://repo.harmonyos.com)上找到该Part,并更方便的使用它,在Part的根目录中包含一个README文件。
68 README.md,为markdown格式的描述关于Part自述说明文件。
70 README文件应包括如何安装,配置和使用Part包中的实例代码说明,以及可能会对用户有所帮助的任何其他信息。
72 自述文件将显示在[DevEco Marketplace](https://repo.harmonyos.com)的Part的详情页面中。
77 bundle.json文件是对当前Part的元数据描述,每个Part中必须包含一个bundle.json文件。主要内容如下:
121 - name:定义Part的名称,放到组织下, 以\@开头,/分割,如:\@myorg/mybundle
123 - version:定义Part版本号,如1.0.0,需满足semver的标准。
125 - description:一句话对Part进行简要的描述。
127 - dependencies:定义Part的依赖Part
129 - envs: 定义Part编译时所需要的参数,包括全局参数以及依赖所需的参数。
131 - scripts:定义在当前Part下能够执行的命令(如编译,构建,测试,烧录等)。
133 - publishAs:定义Part的发布类型(source:源码,binary:二进制,distribution:发行版,code-segment:代码片段)。
135 - segment: 仅针对code-segment类型的Part,定义Part的目标路径(即安装后,Part包中包含的文件复制到的目标路径)
152 Part的全生命周期管理,可以通过hpm命令工具进行操作,hpm的操作命令如下(详细帮助可以执行hpm -h学习):
161 | 创建 | hpm init bundle | 创建Part工程。 |
163 | 安装 | hpm install或hpm i | 安装bundle.json中依赖的Part。 |
164 || hpm install bundle\@version | 安装指定Part版本。 |
165 | 卸载 | hpm uninstall bundle | 删除depedencies依赖的Part。 |
166 || hpm remove或hpm rm bundlename | 删除depedencies依赖的Part。 |
167 | 查看 | hpm list或者hpm ls | 显示当前HPM Part的依赖树。 |
168 || hpm dependencies | 生成当前HPM Part依赖关系数据(在hpm ui也集成了该命令的调用,可以图形化的展示) |
172 | 更新 | hpm update | 更新当前Part依赖的Part的版本。 |
173 || hpm check-update | 检查依赖的Part版本是否有更新。 |
174 | 编译 | hpm build | 编译HPM Part。 |
176 | 打包 | hpm pack | 本地Part打包依赖。 |
178 | 发布 | hpm publish | 发布Part,发布的Part在仓库中必须唯一,且版本唯一(需要账号登录)。 |
184 | 代码段还原或清理 | hpm code clean\|restore | 针对依赖的代码段(code-segment)Part,执行清理或还原操作(即根据segment.de…
185 …s | 生成公钥/私钥对,将公钥配置到[DevEco Marketplace](https://repo.harmonyos.com),可以实现hpm-cli免密登录,发布Part。 |
186 | 生成第三方开源说明 | hpm gen-notice | 根据每个Part的说明,生成一份合并后的第三方开源说明的合并文件。 |
191 Part的依赖分为必选依赖和可选依赖。
193 - 必选依赖:是指Part A在完成某个功能时,必须引入Part B,调用B的接口或服务配合才能完成。称B为A的必选依赖。
195 - 可选依赖:是在Part A在完成某个功能时,可以引入Part C,也可以引入Part D。C和D可以相互替换,称C和D为A的可选依赖。
206 Part的依赖关系分为编译依赖和开发依赖。
239 Part的依赖关系(包括间接依赖)可以通过hpm list命令显示(也可以通过hpm ui命令在可视化的页面中显示)
260 Part在编译的过程中需要依赖系统提供的环境变量来自定义输出,链接所需二进制文件等。
270 - DEP_BUNDLE_BASE:表示最外层Part的路径。
274 全局环境变量由bundle.json中的envs属性来定义。整个Part中的依赖都可以获取到全局变量定义的值。
285 不同Part在引入依赖的过程中可以传入不同的参数,从而使依赖的编译可以满足当前Part的需求。依赖中定义的参数可以在对应依赖脚本执行的上下文中获取到。
299 Part在链接二进制文件的时候,需要知道二进制文件在依赖中的路径,所以依赖的路径会作为环境变量传入编译Part中。
308 2. 发布到[DevEco Marketplace](https://repo.harmonyos.com)的Part的名称,需要以\@开头,通过组织名用/隔离, 如\@my_org/part_na…
310 3. 组织名+Part名称,需要是唯一的,且不容易和其他作者的Part名称混淆。