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

相关推荐
李二。12 小时前
鸿蒙OS NEXT 批量重命名工具:PC端文件管理的效率革命
华为·harmonyos
HwJack2013 小时前
鸿蒙背景下 Cocos Creator 的三大 JS 引擎:JIT 与热更新的十字路口
javascript·华为·harmonyos
提子拌饭13313 小时前
Column 嵌套布局:多级 Column 实现复杂纵向结构——鸿蒙 HarmonyOS ArkTS 原生学习应用
学习·华为·harmonyos·鸿蒙·鸿蒙系统
前端不太难15 小时前
鸿蒙 App 分布式数据同步:架构设计 + Demo 实现
分布式·状态模式·harmonyos
酣大智15 小时前
BGP选路原则--下一跳IGP Metric小的(8)
网络·华为·路由·bgp
腾科IT教育16 小时前
从“韬定律“到鸿蒙生态:国产芯片底层突围,如何重塑应用开发的游戏规则?
华为·harmonyos
坚果派·白晓明16 小时前
鸿蒙PC适配实战:simdjson 三方库移植攻略与 AtomCode Skills 提效之道
c++·harmonyos·三方库·skills·atomcode·c/c++三方库·c/c++三方库适配
不爱吃糖的程序媛17 小时前
React Native 三方库 react-native-version-number 鸿蒙适配实战:从零到版本信息展示
react native·react.js·harmonyos
yuegu77717 小时前
HarmonyOS应用<节气通>开发第11篇:个人中心页开发
华为·harmonyos
不爱学英文的码字机器17 小时前
[鸿蒙PC命令行移植适配]移植rust三方库bottom到鸿蒙PC的完整实践
华为·rust·harmonyos