HarmonyOS 鸿蒙Next 集成react-native-gesture-handler报错

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 集成react-native-gesture-handler报错

在generated相关文件已生成,PackageProvider.cpp中也加入了:#include "generated/RNOHGeneratedPackage.h"

CMakeLists文件也增加相关代码:

file(GLOB GENERATED_CPP_FILES "./generated/*.cpp")
# 添加rnoh_app共享包
add_library(rnoh_app SHARED
    ${GENERATED_CPP_FILES} # 三方库桥接代码
    "./PackageProvider.cpp"
    "${RNOH_CPP_DIR}/RNOHOther.cpp"
    "${RNOH_CPP_DIR}/RNOHAppNapiBridge.cpp"
)

初始化页面时也做了绑定注册的操作:

function createRNPackages(ctx: RNPackageContext): RNPackage[] {
  return [
    new GestureHandlerPackage(ctx),
  ];
}

目前仍然报这个错,请问有好心人遇到过这个问题吗,如何解决啊


更多关于HarmonyOS 鸿蒙Next 集成react-native-gesture-handler报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

22 回复

使用2.14.12版本后还有问题,可再根据文档:https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-gesture-handler.md 确认下

1.) 配置 CMakeLists 和引入 GestureHandlerPackage(需要修改三处)

2.) 在entry/src/main/cpp/PackageProvider.cpp中引入GestureHandlerPackage

3.)在 ArkTs 侧引入 Gesture Handler Package

4)引入原生端代码;引用react-native-gesture-handler,需要在鸿蒙项目中引用package\harmony\gesture_handler.har(在react-native-oh-tpl-react-native-gesture-handler-2.14.12.tgz文件中)

更多关于HarmonyOS 鸿蒙Next 集成react-native-gesture-handler报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这里几个地方我都是按照文档做了的,一直还是报错,不知道是否与rn工程的react-native-oh-tpl-react-native-gesture-handler版本有关,

我使用codegen是单独新建的一个项目,可能版本与bundle包里的react-native-oh-tpl-react-native-gesture-handler版本不一致,

另外,因为我看这个库是需要codegen生成generated相关cpp以及rnoh文件的,请问RNOHGeneratedPackage和GestureHandlerPackage在PackageProvider.cpp中都需要同时引入吗,

回答楼上的问题

  1. 在RN侧安装react-native-oh-tpl-react-native-reanimated,并从里面抽取下载好的rn库,根据下图复制到原生侧的cpp文件夹下

  2. CMakeLists里新增一条 # set(NODE_MODULES "${CMAKE_CURRENT_SOURCE_DIR}/nodeModules")

应该是版本不匹配的问题,您有react_native_openharmony_release-5.0.0.601.har吗?
"react-native-harmony: file:../react-native-harmony/rnoh-react-native-harmony-0.72.32.tgz"和我现在用的react_native_openharmony_release-5.0.0.500.har不匹配,

我又这个har包,怎么传给你呢,

加我Q 511547297

太感谢您了,

安装 file:../react-native-oh-tpl-react-native-reanimated-3.6.3.tgz 后报错:

ReanimatedHermesRuntime.h:27:10: fatal error: ‘hermes/hermes.h’ file not found

有大佬晓得怎么处理的吗?

这个问题我没遇到过,但是reanimated这个包似乎需要做几个特殊操作,因为需要放图我单图发了一个回复。

最后问题解决了,感谢大佬的帮忙,总结一下供大家参考:

1、跟着文档操作走就好,问题出在rn侧给的common包没有清除缓存,导致版本一直匹配不上

2、在调试的时候建议使用metro连接的方式,只要metro本地调试没问题,问题就出现在打包上

大佬麻烦问下,下载第三方库的tgz包之后,并使用yarn add @react-native-oh-tpl/react-native-gesture-handler@file:#操作后,我执行了yarn run codegen操作,并在相应文件中按照codegen的文档进行了添加。还需要再按照第三方的库的文档进行添加相应代码吗,类似[https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-gesture-handler.md]中的1-5步骤。

目前我还是按照步骤引入了,不过我看webview这个组件就是只进行了generated,没有在provider.cpp里引入,具体的下午我测试下给你回复。

我测试了几个场景:

  1. 全都不引入,只放入generated,并在CMakeLists.txt里面配置generated目录,报错找不到gesturehandler组件。
  2. 引入.har包和generated,在createRNPackages中引入package,报错找不到某个方法。

结论:
codegencppcreateRNPackages引入都是需要的,否则都会报错,还是按照文档来吧。

好的,感谢大佬回复!!!

鸿蒙0.72.28匹配的react-native-oh-tpl-react-native-gesture-handler版本应该是2.14.12版本,降下版本试下呢

一开始我是用的是2.14.12,后来改成了2.14.13。请问rn前端项目的react-native-oh-tpl-react-native-gesture-handler版本和鸿蒙原生引入的har包版本不一致,会不会跟这个有关呀?

我使用codegen是单独新建的一个项目,可能版本与bundle包里的react-native-oh-tpl-react-native-gesture-handler版本不一致,

2.14.12也是同一个错误,

版本:

  • @rnoh/react-native-openharmony”: “^0.72.28”,
  • react-native-oh-tpl-react-native-gesture-handler:2.14.13
  • RN(用于codegen的单独项目):
  • “react-native-harmony”: “file:…/react-native-harmony/rnoh-react-native-harmony-0.72.29.tgz”,
  • @react-native-oh-tpl/react-native-gesture-handler”: “file:…/react-native-gesture-handler/react-native-oh-tpl-react-native-gesture-handler-2.14.13.tgz”

不知道这个报错问题是否会和bundle中一些版本信息有关?

另外Couldn’t provide turbo module "IntendAndroid"这个错误也报的很奇怪,是否有朋友也遇到过?

针对HarmonyOS鸿蒙Next集成react-native-gesture-handler报错的问题,可能的原因及解决方案如下:

  1. 兼容性问题: react-native-gesture-handler可能尚未完全适配HarmonyOS平台。需要检查该库的最新版本或分支是否支持HarmonyOS。如果不支持,可能需要寻找替代方案或自行适配。

  2. 依赖冲突: 集成过程中可能存在依赖库冲突。检查项目中其他依赖是否与react-native-gesture-handler存在不兼容的情况。

  3. 配置错误: 确保在鸿蒙项目的配置文件中正确引入了react-native-gesture-handler。包括修改build.gradle文件、配置原生模块等。

  4. 编译环境问题: 鸿蒙开发环境可能与Android存在差异,确保使用的开发工具、SDK版本等符合鸿蒙开发要求。

  5. 源码修改: 如果报错信息指向特定代码问题,可能需要直接修改react-native-gesture-handler的源码以适应鸿蒙平台。

如果上述方法均未能解决问题,可能是更深层次的系统或库兼容性问题。此时,建议直接联系react-native-gesture-handler的维护者或鸿蒙开发者社区寻求帮助。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部