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

相关推荐
世人万千丶18 小时前
Flutter 框架跨平台鸿蒙开发 - 恐惧清单应用
学习·flutter·华为·开源·harmonyos·鸿蒙
行乾18 小时前
鸿蒙端 IMSDK 架构探索
架构·harmonyos
Utopia^18 小时前
Flutter 框架跨平台鸿蒙开发 - 21天挑战
flutter·华为·harmonyos
一直在想名19 小时前
Flutter 框架跨平台鸿蒙开发 - 黑白屏
flutter·华为·kotlin·harmonyos
一蓑烟雨,一任平生19 小时前
鸿蒙H5调试方法
前端·华为·h5·harmonyos
HwJack2020 小时前
解密HarmonyOS开发中的LocalStorage是什么
华为·harmonyos
AI_零食20 小时前
Flutter 框架跨平台鸿蒙开发 - 孤独指数应用
学习·flutter·开源·harmonyos
浮芷.20 小时前
Flutter 框架跨平台鸿蒙开发 - 儿童技能打卡墙应用
科技·flutter·华为·harmonyos·鸿蒙
Utopia^20 小时前
Flutter 框架跨平台鸿蒙开发 - 重力感知
flutter·华为·harmonyos
weixin_4307509320 小时前
AC旁挂+不同区域不同网段+同名wifi同密码 ——实现无线终端智能漫游
网络·华为·无线·漫游