跳到主要内容

HAR转HSP指导

目前HAR的使用存在打包多份,包膨胀的问题,导致整体应用包的体积很大,HSP可以很好地解决该问题,本文介绍如何通过配置项的变更将HAR工程转换为HSP工程。

部分组件和模块在HAP、HSP、HAR中集成使用时存在差异,例如加载HAR中Worker线程文件相比HSP存在单独的使用约束,因此按照如下步骤完成HAR转HSP后,请关注对应组件和模块介绍并进行适配。

HAR转HSP的操作步骤

  1. 修改HAR模块下的module.json5文件,将type字段设置为shared,并新增deliveryWithInstall和pages字段。

    {
    "module": {
    // ...
    "type": "shared",
    "deliveryWithInstall": true,
    "pages": "$profile:main_pages",
    // ...
    }
    }
  2. 在resources\base下新增profile文件夹,在profile下新增一个main_pages.json文件,并配置如下内容。

    {
    "src": [
    "pages/PageIndex"
    ]
    }
  3. 在ets目录下新增pages目录,并在pages目录下新增PageIndex.ets文件,配置如下内容。

    @Entry
    @Component
    struct PageIndex {
    @State message: string = 'hello world';

    build() {
    Row() {
    Column() {
    Text(this.message)
    .fontSize(50)
    .fontWeight(FontWeight.Bold)
    }
    .width('100%')
    }
    .height('100%')
    }
    }
  4. 删除HAR模块的build-profile.json5文件中的consumerFiles字段配置。

  5. 修改HAR模块的hvigorfile.ts文件,将以下内容替换文件内容。

    // library\hvigorfile.ts
    import { hspTasks } from '@ohos/hvigor-ohos-plugin';

    export default {
    system: hspTasks, // 编译修改成HSP的任务
    plugins:[]
    }
  6. 修改oh-package.json5文件,新增packageType配置。

    {
    // ...
    "packageType": "InterfaceHar"
    }
  7. 修改项目根目录下的build-profile.json5文件,在modules标签下找到library的配置,新增targets标签。

    "modules": [
    // ...
    {
    "name": "library",
    "srcPath": "./library",
    "targets": [
    {
    "name": "default",
    "applyToProducts": [
    "default"
    ]
    }
    ]
    }
    ],