HarmonyOS 鸿蒙Next中RN多har包autolinking失效

HarmonyOS 鸿蒙Next中RN多har包autolinking失效 封装了一个多har包的三方库,autolinking失效,发现是0.77.48的"@react-native-oh/react-native-harmony-cli"源码中给拦截了,是不是不能用多har包来做autolinking

3 回复

尊敬的开发者,您好,77 RN是支持多har包来做autolinking 适配的 https://gitcode.com/OpenHarmony-RN/ohos_react_native/blob/0.77-main/docs/zh-cn/Autolinking.md#rn%E4%B8%89%E6%96%B9%E5%BA%93%EF%BC%88%E5%BA%93%E5%BC%80%E5%8F%91%E8%80%85%EF%BC%89 可以将@react-native-oh/react-native-harmony-cli升级到0.77.71解决该问题

更多关于HarmonyOS 鸿蒙Next中RN多har包autolinking失效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙Next的RN框架中,多HAR包的autolinking失效主要因为OHPM(OpenHarmony Package Manager)对多个HAR包的native模块配置只保留最后一次解析的结果,导致前面HAR包的链接丢失。需确保每个HAR的oh-package.json5中均声明nativeModules字段,并在主工程module.json5里显式列出所有需注册的native模块。同时检查build-profile.json5中各HAR的依赖顺序与类型(hsp/har)。

在 HarmonyOS RNOH 的 autolinking 设计中,当前(包括 0.77.48 版本)确实不支持一个三方库包含多个 har 包。原因在于 CLI 的 autolinking 扫描器在解析 oh-package.json5 时,只会按单个 har 入口(main/types 指向的模块)来识别库,当检测到多 har 结构时会将其视为“非标准库”并直接拦截,导致链接失效。

这并非 bug,而是有意限制,因为多 har 包会使依赖解析、符号合并和原生模块注册路径变得复杂且不可控。若需在多 har 场景下使用,必须舍弃 autolinking,改为手动配置:在项目的 oh-package.json5 中显式声明每个 har 依赖,同时在 ArkTS 侧手动调用 react_native_oh_tpl.harModules 注册模块。目前没有计划在 autolinking 中放开此限制。

回到顶部