HarmonyOS鸿蒙Next中ohpm分发平台,build-profile.json5如何同时兼容HarmonyOS和OpenHarmony

HarmonyOS鸿蒙Next中ohpm分发平台,build-profile.json5如何同时兼容HarmonyOS和OpenHarmony 在这个配置文件里,有这样一个字段:

{
  instancePath: 'app.products[0].runtimeOS',
  keyword: 'enum',
  params: { allowedValues: [ 'HarmonyOS', 'OpenHarmony' ] },
  message: 'must be equal to one of the allowed values',
  location: 'E:/BqLog/build/lib/ohos/harmonyOS/build-profile.json5:10:23'
}

他只能是HarmonyOS或者OpenHarmony二选一。 事实上我的包二进制上我试了,对于OpenHarmony和HarmonyOS API Level 10和以上都是兼容的。

但是打包成har,这个字段却无法兼容两种系统。 我需要把包上传到ohpm的分发平台上面去,上面只能传一个har包,如何保证两个系统都能从ohpm上获取包的分发呢


更多关于HarmonyOS鸿蒙Next中ohpm分发平台,build-profile.json5如何同时兼容HarmonyOS和OpenHarmony的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

这个点更像是“包元数据约束”,不是二进制兼容性问题。build-profile.json5 里的 runtimeOS 当前就是单值枚举,所以一个 HAR 的元数据不能同时声明 HarmonyOSOpenHarmony。也就是说:源码层面你可以尽量写兼容代码,但分发层面通常还是要分别产出两套制品,或者至少两套构建配置。若一定走 ohpm 单包分发,当前公开配置里我没见到“一包双声明”的写法,建议改成双 pipeline / 双产物,并在 README 或版本说明里标注各自适用平台。

更多关于HarmonyOS鸿蒙Next中ohpm分发平台,build-profile.json5如何同时兼容HarmonyOS和OpenHarmony的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


感谢,我觉得这一块ohpm和har确实有进步空间。 不过我目前实测,发HarmonyOS的上去,OpenHarmony也能下载试用,应该是目前校验还不严格。

学习了

HarmonyOS 不是兼容 OpenHarmony 吗

二进制确实兼容,但是这个配置确实不一样。

在build-profile.json5中,通过设置"targetPlatform": ["HarmonyOS", "OpenHarmony"]可实现双平台兼容。若需区分不同模块,可在appmodule层级分别配置targetPlatform字段,确保ohpm包元数据包含两个平台标识。

在 HarmonyOS Next 的 ohpm 分发流程中,runtimeOS 字段仅支持二选一。若代码在两种系统上二进制完全兼容,最佳做法是将 runtimeOS 设置为 "OpenHarmony"。因为 HarmonyOS 基于 OpenHarmony,且 API Level 10+ 保持高度一致,声明为 OpenHarmony 的 HAR 包可被 HarmonyOS 设备正常安装与运行,无需额外兼容配置。

ohpm 平台的分发过滤主要依据该字段归类,设置为 OpenHarmony 即可让两个系统的用户都搜索并获取到你的包。不建议尝试通过构建多个 product 生成不同 HAR 分别上传,因为 ohpm 目前一个版本号对应单一发布产物,且 HarmonyOS 设备天然能消费 OpenHarmony 包。此举简单且符合两者的兼容性关系。

回到顶部