HarmonyOS 鸿蒙Next 集成react-native-gesture-handler报错
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
使用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中都需要同时引入吗,
回答楼上的问题
-
在RN侧安装
react-native-oh-tpl-react-native-reanimated
,并从里面抽取下载好的rn库,根据下图复制到原生侧的cpp文件夹下 -
在
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里引入,具体的下午我测试下给你回复。
我测试了几个场景:
- 全都不引入,只放入
generated
,并在CMakeLists.txt
里面配置generated
目录,报错找不到gesturehandler
组件。 - 引入
.har
包和generated
,在createRNPackages
中引入package
,报错找不到某个方法。
结论:
codegen
与cpp
、createRNPackages
引入都是需要的,否则都会报错,还是按照文档来吧。
好的,感谢大佬回复!!!
鸿蒙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也是同一个错误,
另外Couldn’t provide turbo module "IntendAndroid"这个错误也报的很奇怪,是否有朋友也遇到过?
针对HarmonyOS鸿蒙Next集成react-native-gesture-handler报错的问题,可能的原因及解决方案如下:
-
兼容性问题: react-native-gesture-handler可能尚未完全适配HarmonyOS平台。需要检查该库的最新版本或分支是否支持HarmonyOS。如果不支持,可能需要寻找替代方案或自行适配。
-
依赖冲突: 集成过程中可能存在依赖库冲突。检查项目中其他依赖是否与react-native-gesture-handler存在不兼容的情况。
-
配置错误: 确保在鸿蒙项目的配置文件中正确引入了react-native-gesture-handler。包括修改build.gradle文件、配置原生模块等。
-
编译环境问题: 鸿蒙开发环境可能与Android存在差异,确保使用的开发工具、SDK版本等符合鸿蒙开发要求。
-
源码修改: 如果报错信息指向特定代码问题,可能需要直接修改react-native-gesture-handler的源码以适应鸿蒙平台。
如果上述方法均未能解决问题,可能是更深层次的系统或库兼容性问题。此时,建议直接联系react-native-gesture-handler的维护者或鸿蒙开发者社区寻求帮助。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,