鸿蒙 Stage Arkts HSP+HAR 的集成

一、场景说明

  • P 提供 interface/abstract class 定义 A
  • B1/B2/B3 实现 A 的定义,并提供产物
  • P 集成 B1/B2/B3 根据需要加载对应的实现,统一接口,代码逻辑统一

二、目标

  • B* 产物不用携带 A,避免代码重复、冲突
  • P 可以在不改变定义(或不影响B*继承/编译)的情况下,可以随意修改,最终效果以 P 最终运行时集成的 A+ 为准

三、原 Android 实现

  1. P 提供 aar/jar A
  2. B* compileOnly 依赖 A,产物 aar/jar
  3. P 同时 implement A + B*

四、鸿蒙实现方法

  1. P 新建 Hsp module,编译产出 A (hsp + tgz)
  2. B* devDependencies 依赖 A(tgz),产出 har
  3. P 使用方的 hap(Entry)dependencies 直接依赖 A(tgz) + B*(har)
json 复制代码
{
  "name": "***",
  "version": "1.0.0",
  "dependencies": {
    '@testgroup1/hsp_package': 'file:.. tgz 路径/module路径/版本号',
    "@testgroup2/har_package": "file:.. har 路径/版本号",
  }
}
  1. P Entry 配置 hsp 动态加载
json 复制代码
{
  "apiType": "stageMode",
  "buildOptionSet": [
    {
      "name": "release",
      "arkOptions": {
        // 新增这里
        "runtimeOnly": {
          "packages": [
            "@testgroup1/hsp_package",
            "@testgroup2/har_package",
          ]
        }
      }
    },
  ]
}
  1. 运行即可成功

五、提供产物测试

  • 在没有 hsp 时,直接提供 har 包,测试人员即可 hdc install *.hap 成功

  • 存在 hsp 时,直接 hdc install *.hap 报错

    Failed to install the HAP or HSP because the dependent module does not exist. entry's dependent module: * does not exist

  • 解决办法:

    1. DevEcoStudio 运行可以成功,查看他在运行时的命令
    2. 那我们只要照着做,用同样的命令,即可成功安装运行
    3. 也可以写一个 bat/shell 脚本,可以更快捷方便

六、发布

没有任何变化,APP 包中会包含 hap+hsp 包同时上传到 AGC 服务器。


有任何问题评论 or 留言交流

相关推荐
小雨青年2 小时前
鸿蒙 HarmonyOS 6 | AI Kit 集成 CANN Kit 异构计算服务
人工智能·华为·harmonyos
酣大智2 小时前
华为通用路由平台VRP
网络·华为
前端不太难2 小时前
HarmonyOS 游戏卡顿,问题不在渲染
华为·状态模式·harmonyos
讯方洋哥2 小时前
HarmonyOS App开发——一多图片浏览器应用App开发
华为·harmonyos
Miguo94well11 小时前
Flutter框架跨平台鸿蒙开发——海龟汤APP的开发流程
flutter·华为·harmonyos·鸿蒙
讯方洋哥12 小时前
HarmonyOS App开发——购物商城应用App开发
harmonyos
无穷小亮12 小时前
Flutter框架跨平台鸿蒙开发——Excel函数教程APP的开发流程
flutter·华为·excel·harmonyos·鸿蒙
无穷小亮12 小时前
Flutter框架跨平台鸿蒙开发——打字练习APP开发流程
flutter·华为·harmonyos·鸿蒙
九 龙13 小时前
Flutter框架跨平台鸿蒙开发——水电缴费提醒APP的开发流程
flutter·华为·harmonyos·鸿蒙