层次说明

层次 说明 特点
产品层(products) HAP,即应用整体 可安装和运行在不同设备上
功能层(features) HSP,动态共享,应用的功能 1.不能独立运行,需要依赖于产品 Hap 包
2.可有page页面
资源(common) HAR,静态共享库,功能依赖的资源 1.不能独立运行
2.没有page页面

HSP和HAR

特点

  • HSP不支持在设备上单独安装/运行,需要与依赖该HSP的HAP一起安装/运行。HSP的版本号必须与HAP版本号一致。
  • HSP不支持在配置文件中声明UIAbility组件与ExtensionAbility组件。
  • HSP可以依赖其他HAR或HSP,但不支持循环依赖,也不支持依赖传递。

两者异同

相同点:

  1. 模块间资源共享
  2. 不支持在设备上单独安装/运行
  3. 不支持在配置文件中声明UIAbility组件与文档中心组件
  4. 不支持循环依赖,也不支持依赖传递

不同点:

  1. har 发布二方或三方仓使用(hsp 不可以)2.har 中不支持在配置文件中声明pages页面3. hsp 中支持在配置文件中声明pages页面
  2. hsR多模块依赖只会打包一份
  3. hsp 支持按需加载

使用方法

  1. 根目录下创建products、features、commons,分别对应三层结构
  2. 三层内部组成如下:
  • products:创建Module->entry ability或者feature ability。即Phone、Tablet、Car等具体设备
  • features:创建Module->Shared Library。即HSP
  • commons:创建Module->Static Library。即HAR,常命名为base
  1. commons
  • 在common/basic/src下新建utils(存放工具)、constants(常量,格式为“AAA=aaa_aaa”)、api、components、models文件夹
  • 上一条每一个文件夹下新建index.ets,并写入" export * from ‘./xxx’ "。xxx为同文件夹下的文件
  • 在commons的index.ets里同样写入" export * from ‘…/xxx’ "。
  1. features
    配置依赖。
//features/oh-package.json5
{
"dependencies":{
//前面的basic全部小写,且与后面的basic同名(这里可不管大小写,但名称要相同)
"basic": "file:../common/basic"
}
}
  1. products
    配置依赖。
//products/Phone或其他/oh-package.json5
{
"dependencies":{
//前面的myfeature全部小写,且与后面的MyFeature同名(这里可不管大小写,但名称要相同)
"myfeature": "file:../../features/MyFeature/"
}
}
  1. 构建
  • Run Configurations中选择运行哪一个(Phone还是其他)
  • 如果出现依赖未安装,点击Run->Edit Configurations->Deploy Multi Hap标签页,勾选要安装的依赖包
  1. 版本管理
  • VCS->Enable Vesion Control Integrations
  • 全选左侧文件,并右键后选择Git->add
  • 点击上方栏Git->commit
  • 点击上方栏Git->Manage Remote,配置远程仓库(注意远程仓库得是空仓,否则push不上去)
  • 点击上方栏Git->push,输入账户和密码