鸿蒙 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 留言交流

相关推荐
xq9527几秒前
HDC Assistant 插件横空出世
harmonyos
垆边人似月.1 小时前
华为机试题 :两数之和
c++·算法·华为
垆边人似月.1 小时前
华为机试题 :有效的括号
c++·算法·华为
高德开放平台4 小时前
高德开放平台×华为:一句话,开启腕上打车
华为
垆边人似月.5 小时前
华为机试题 :字符串压缩
算法·华为
OH_TPC7 小时前
【鸿蒙优选三方库】@ohos/aki:一行代码让 ArkTS 调 C++
harmonyos
垆边人似月.8 小时前
华为机试题 :最长递增子序列题目
数据结构·c++·算法·华为
wenyiyiyiyiyi8 小时前
我用鸿蒙 ArkTS 写了个自己天天用的备忘录:待办、课表和长期目标,全塞进一块桌面卡片
harmonyos
承渊政道10 小时前
鸿蒙设备远控电脑实测:ToDesk蓝牙键鼠、双模式鼠标、跨端剪贴板,远控电脑更顺手了
计算机外设·电脑·harmonyos·远程工作·todesk
CV工程师丁Sir13 小时前
ArkWeb 手记 04|DevTools 调试与缓存清理
java·spring·缓存·harmonyos