HarmonyOS 鸿蒙Next组件化打包方案

HarmonyOS 鸿蒙Next组件化打包方案 【设备信息】Mate 60
【API版本】Api14
【DevEco Studio版本】5.0.7.200

【问题描述】

目前项目架构使用华为推荐的三层架构并构建SDK(har)供App使用

Product层:Phone
SDK层:SDK
Feature层:FeatureA、FeatureB
Common层:CommonA、CommonB

依赖关系如下:
Phone->SDK->FeatureA+FeatureB
FeatureA->CommonA+CommonB
FeatureB->CommonA+CommonB

打包流程如下:

一、若CommonA发生了变化

  1. 构建CommonA并发布到远程私仓
  2. 修改FeatureA、FeatureB中对CommonA的版本号依赖
  3. 分别构建FeatureA、FeatureB并发布到远程私仓
  4. 修改SDK对FeatureA、FeatureB、CommonA的版本号依赖
  5. 构建SDK并发布到远程私仓

二、若CommonA无修改代码

  1. 分别构建FeatureA、FeatureB并发布到远程私仓
  2. 修改SDK对FeatureA、FeatureB、CommonA的版本号依赖
  3. 构建SDK并发布到远程私仓

疑问点:

  1. 若CommonA、FeatureA代码改动、FeatureB不改动,如何操作可以达到【不重新构建并发布FeatureB】就可以将CommonA、FeatureA更新
  2. 若CommonA改动,FeatureA、FeatureB均不改动,如何操作可以达到【不重新构建并发布FeatureA、FeatureB】就可以将CommonA
  3. 如果SDK中CommonA的版本号依赖是0.0.3,FeatureA中CommonA的版本号依赖是0.0.2,FeatureB中CommonA的版本号依赖是0.0.2,最终的依赖关系是怎样的,SDK、CommonA、CommonB分别依赖一份CommonA吗

更多关于HarmonyOS 鸿蒙Next组件化打包方案的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

可以试试以下方案:

方案一: 打包前配置依赖最新的版本,后续有包更新后 执行 ohpm cache clean ohpm clean 命令清除 ohpm缓存,再同步工程就可以了 如:

"CommonA": "latest"

方案二: 配置依赖的版本号加上特殊字段,更据需要使用指定最新的版本:

版本中的特殊符号^及~的含义,版本号分为major,minor,patch。分别对应第一,二,三位 ^表示版本号从左边起,第一位非0数字不变,其他位可以大于等于当前版本,例如:

major非0 ^1.2.2 ===> 1.2.2 <= v < 2.0.0

minor非0 ^0.1.2 ===> 0.1.2 <= v < 0.2.0

patch非0 ^0.0.1 ===> 0.0.1 <= v < 0.0.2

~如果有第二位,则第三位可以变,第二位不能变;如果没有第二位,则第二位,第三位可以变,第一位不能变,例如: ~1.2.0 1.2.0 <= x < 1.3.0 ~1.3

1.3.0 <= x < 1.4.0 ~2

2.0.0 <= x < 3.0.0

主版本号(major):当你做了不兼容的 API 修改

次版本号(minor):当你做了向下兼容的功能性新增,可以理解为 Feature 版本

修订号(patch):当你做了向下兼容的问题修正,可以理解为 Bug fix 版本

具体可以百度参考 semver规则

如:

"@ohos/lottie": "^2.0.15"

方案三: 在工程根目录下的 oh-package.json5 文件中,使用 overrides 字段,替换依赖为指定版本, 详情参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-oh-package-json5-V5#zh-cn_topic_0000001792256137_overrides

关于问题三,

参考 ohpm 版本冲突自动解决功能:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-ohpmrc-V5#section368717475562

ohpm 会优先安装最高版本的库(本地库 的优先级 比 远程库的高,会优先使用本地 依赖)

也可以在 oh-package-lock.json5 文件中 查看具体安装的版本

或者

在 工程根目录下的 oh_modules -> .ohpm 查看实际安装的库的源码(文件夹命名的 @ 后面的是 版本号)

更多关于HarmonyOS 鸿蒙Next组件化打包方案的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS Next的组件化打包方案主要基于模块化的设计理念,通过将应用拆分为多个独立的组件,每个组件可以独立开发、测试和打包。组件化打包的核心在于使用HAP(Harmony Ability Package)文件格式,HAP文件是HarmonyOS应用的基本分发单元,包含了应用的代码、资源和配置文件。

在HarmonyOS Next中,组件化打包的主要步骤包括:首先,开发者需要将应用拆分为多个功能模块,每个模块对应一个HAP文件。其次,通过DevEco Studio进行模块的独立开发和调试。最后,使用HAP工具将各个模块打包成独立的HAP文件,并通过AppGallery进行分发。

组件化打包的优势在于提升了应用的灵活性和可维护性,开发者可以根据需要动态加载或卸载组件,减少了应用的体积和启动时间。此外,组件化打包也支持多设备适配,开发者可以为不同的设备类型定制不同的组件,优化用户体验。

在打包过程中,开发者需要注意每个HAP文件的配置,确保其依赖关系和权限设置正确。同时,HAP文件的大小和资源管理也是需要关注的重点,以避免影响应用的性能和用户体验。

回到顶部