跳到主要内容

集成态HSP

集成态HSP是应用内HSP的中间编译产物,用于解决使用方的bundleName和签名之间的强耦合问题。

HSP只能给bundleName一样的工程使用,集成态HSP可以给不同的bundleName的工程集成使用。

使用方使用集成态HSP时,需要采用使用方的签名文件对集成态HSP重新签名,且需要优先安装重新签名后的集成态HSP。

使用场景

如果存在多个应用包含相同的基础能力,例如日志打印模块,为节约开发成本并实现代码和资源的共享,多个应用可以共用一个日志模块。此时,可以通过应用内HSP方式提供能力。由于应用内HSP的限制,每个应用在使用前都需要调整其bundleName,并使用当前应用的签名重新签名,构建一个新的HSP提供给当前应用使用。这意味着,每增加一个应用,就需要进行一次调整bundleName和重新签名的操作,导致签名和打包过程繁琐。

而集成态HSP在DevEco Studio编译过程中,bundleName和重签名的动作会自动完成,开发者无需关注重复签名的操作,可以专注于功能业务的开发。

约束限制

  • 集成态HSP只支持Stage模型
  • 从API version 12开始,支持使用集成态HSP。
  • 使用集成态HSP要求使用标准化的OHMUrl格式。需要在工程级的build-profile.json5文件中,将strictMode下的useNormalizedOHMUrl字段设置为true。

开发使用说明

配置集成态HSP

  1. 工程配置:配置工程级的build-profile.json5文件,将useNormalizedOHMUrl字段设置为true。

    {
    "app": {
    "signingConfigs": [
    ],
    "products": [
    {
    "name": "default",
    "signingConfig": "default",
    "targetSdkVersion": "5.1.1(19)",
    "compatibleSdkVersion": "5.1.1(19)",
    "runtimeOS": "HarmonyOS",
    "buildOption": {
    "strictMode": {
    // ...
    "useNormalizedOHMUrl": true,
    }
    }
    }
    ],
    // ...
    },
    // ...
    }
  2. 模块配置:修改模块级构建配置文件build-profile.json5,将integratedHsp配置项设置为true,指定构建的HSP模块为集成态HSP。

    // library/build-profile.json5
    {
    "apiType": "stageMode",
    // ...
    "buildOptionSet": [
    {
    // ...
    "arkOptions": {
    "integratedHsp": true,
    // ...
    },
    },
    ],
    // ...
    }
  3. 打包配置(tgz包)。

    (1) 配置项目签名信息,详情请参见应用/元服务签名

    (2) 配置release模式。

    (3) 选择library目录,执行Build -> Make Module 'library'。

使用方集成

  1. 创建目录并拷贝文件:在entry目录下新建libs目录,将集成态打包产物tgz包拷贝到libs目录下。

  2. 工程依赖配置:在使用方主模块的oh-package.json5配置文件中添加依赖。

    "dependencies": {
    "library": "file:./libs/library-default.tgz"
    },
  3. 工程配置:在工程级的build-profile.json5文件中,将useNormalizedOHMUrl字段设置为true。

    {
    "app": {
    "signingConfigs": [
    ],
    "products": [
    {
    "name": "default",
    "signingConfig": "default",
    "targetSdkVersion": "5.1.1(19)",
    "compatibleSdkVersion": "5.1.1(19)",
    "runtimeOS": "HarmonyOS",
    "buildOption": {
    "strictMode": {
    // ...
    "useNormalizedOHMUrl": true,
    }
    }
    }
    ],
    // ...
    },
    // ...
    }
  4. 配置签名。

    安装和运行应用前,必须配置项目签名信息,详见应用/元服务签名

  5. 安装和运行