React Native鸿蒙化关于第三方库安装问题

article/2025/8/13 12:02:27

最近在学习RN适配鸿蒙的过程中,对于安装各种第三方库踩坑各种报错,最终研究后解决了大部分,今天写一篇文档来记录一下踩坑的过程。

首先,RN环境搭建就不赘述了,目前@rnoh/react-native-openharmony最新稳定发布版本为0.72.53,0.72.59的版本暂时未正式发布,尝试过安装最新版本0.72.59,后续发现装第三方库会出现各种兼容性问题。附react-native-openharmony的gitee发布地址:docs/zh-cn/版本说明.md · OpenHarmony-SIG/ohos_react_native - Gitee.com

环境搭建可以参考这篇文章:ReactNative鸿蒙化从基础到应用_react native 鸿蒙-CSDN博客

根据官方的环境搭建步骤搭建完成以后,会将RN端和鸿蒙端分离。运行项目之前可以使用Metro热加载来进行热更新和调试设置,启动Metro的方法我写成了一个小脚本,见文章末尾链接(前提必须安装hdc)。若是分离状态进行开发,安装第三方库时请看下面方法(本文所有三方库安装均基于openharmonyRN版本0.72.53):

1. 选择第三方库版本

react-native-onpenharmony三方库官方汇总链接:usage-docs: react native openharmony 三方库说明文档

以安装@react-native-picker/picker为例

官方安装方法链接:
zh-cn/react-native-picker-picker.md · react-native-oh-library/usage-docs - Gitee.com

我们需要首先进入github的Releases 发布地址查看对应版本信息。

可以看到最新的是0.3.0版本,但是千万不要直接输入以下命令安装,它会默认安装最新版本的三方库导致和RN的openharmony版本不兼容!

npm install @react-native-oh-tpl/picker

我们从github的release发布地址页面往下翻,直到看到可适配的RNharmony版本,如下图的0.72.29,即可下载此版本的三方库。

2. 双端下载

        (1)RN端

        首先在RN端下载此三方库(必须),一定要在RN端先下载此库,在RN端根目录下执行以下命令(一定要限定版本):

npm install @react-native-oh-tpl/picker@2.6.1-0.2.5

        下载完成后执行CodeGen桥接代码(必须),不论安装哪个三方库,不管文档有没有写需要执行,最好都执行一次,以免缺失文件。官方安装步骤(比较繁琐):zh-cn/react-native-picker-picker.md · react-native-oh-library/usage-docs - Gitee.com

        简化一下步骤如下:先在RN端中的Package.json添加配置

..."scripts": {..."codegen": "react-native codegen-harmony --cpp-output-path ./harmony/entry/src/main/cpp/generated --rnoh-module-path ./harmony/entry/oh_modules/@rnoh/react-native-openharmony"},...

        在RN端的根目录执行cmd命令:

        执行以后会生成桥接文件,会多出两个generated文件夹。分别位于RN端下的harmony\entry\oh_modules\@rnoh\react-native-openharmony中,和harmony\entry\src\main\cpp中,这两个generated文件夹极为重要,后续将分别添加到鸿蒙端中相应的位置。

        之后,直接根据官网的步骤在鸿蒙端中配置 CMakeLists 和引入 RNOHGeneratedPackage(C++)

         (2)鸿蒙端

        这里我直接在鸿蒙端也同样使用npm进行了三方库的安装,不过根据官网说直接可以引用har包进行配置,我没有尝试过,有兴趣的小伙伴可以自己试试。即在鸿蒙端的项目根目录下也执行和上面相同的npm命令:

        

        安装以后,根据此三方库的官网步骤进行手动Link。以下操作均在鸿蒙端

        

        注意,这里问题来了,安装完库以后,先不要急着在IDE内点击Sync进行同步。先完成上面的依赖添加。在entry下和工程级下oh-package.json5中添加字段时可能会报找不到此文件的错误,这是因为这里文档默认用户使用的是本地安装鸿蒙化依赖,但是官网步骤是安装的远程依赖,所以上面两个位置的oh-package.json5中的语句都应该改为:

        直接写版本号即可。

        由于picker我是直接npm安装的,所以picker.har的路径也要改一下,如下:      

        所有的三方库都安装在根目录下的node_moudles/@react-native-oh-tpl内。

        以后每次安装新的库都要在这里添加新库的依赖。

        至此可以点击Sync进行同步。之后的步骤可以继续根据官网步骤照样走就行了。

3. 添加桥接代码(最重要)

        各种引入添加完成后最关键的步骤来了,还记得第二步中RN端下生成的两个generated文件夹嘛?现在必须要添加到鸿蒙端中。RN端中将cpp文件夹下的generated文件夹复制到鸿蒙端的entry/src/main/cpp中。将RN端中oh_modules\@rnoh\react-native-openharmony下的generated文件夹复制到鸿蒙端的entry/oh_modules/@rnoh/react-native-openharmony文件夹下

        

cpp下generated文件夹存放位置

                        

oh_modules下generated文件夹存放位置

         都存放完毕以后,记得点一下同步和刷新项目。

注意:

如果安装新的库以后,需要将RN端中原来的两个generated文件夹先删除,然后重新生成新的generated文件夹并且导入到鸿蒙端中,将原来的两个文件夹替换掉。

附Codegen官方使用步骤:zh-cn/codegen.md · react-native-oh-library/usage-docs - Gitee.com

4. 运行项目

最后,运行项目就可以啦,可能引入三方库后要加载很长时间,还会有黄色警告,不过不用理会,等等就可以了。

注意:每次安装完新的三方库后必须要先清理一下项目再运行!

附录:

自动启动Metro小脚本下载地址:https://wwgp.lanzouw.com/ireFP2uph8dg
密码:gsc2

使用时先用记事本打开,将下面地址改为自己的RN端根目录的地址。保存后双击打开。

注意:

1. 使用前一定要先安装好hdc工具

2. 使用前一定要先打开模拟器,但是不要运行项目!运行完此脚本再运行项目!


http://www.hkcw.cn/article/MYPLgxiXqS.shtml

相关文章

鸿蒙知识总结

判断题 1、 在http模块中,多个请求可以使用同一个httpRequest对象,httpRequest对象可以复用。(错误) 2、订阅dataReceiverProgress响应事件是用来接收HTTP流式响应数据。(错误) 3、ArkTS中变量声明时不需要…

【Linux】——从0到1的学习,让你熟练掌握,带你玩转Linux,教你安装Java常用软件、及spring boot项目部署

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大三学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL&#xff0…

【Linux】线程池和线程补充内容

个人主页~ 线程池 一、线程池简介单例模式线程池简介 二、单例模式线程池的实现1、ThreadPool.hpp2、Task.hpp3、main.cpp 三、其他常见锁读写锁 一、线程池简介 池化技术我们并不陌生,我们在前面的文章中实现过进程池,这里线程池的作用也是先申请资源交…

Linux:进程间通信---消息队列信号量

文章目录 1.消息队列1.1 消息队列的原理1.2 消息队列的系统接口 2. 信号量2.1 信号量的系统调用接口 3. 浅谈进程间通信3.1 IPC在内核中数据结构设计3.2 共享内存的缺点3.3 理解信号量 序:在上一章中,我们引出了命名管道和共享内存的概念,了解…

【HarmonyOS Next之旅】DevEco Studio使用指南(五) -> 添加/删除Module

目录 1 -> 创建新的Module 2 -> 导入Module 3 -> 配置distroFilter/distributionFilter分发规则 4 -> 删除Module 1 -> 创建新的Module Module是应用/元服务的基本功能单元,包含了源代码、资源文件、第三方库及应用/元服务配置文件,…

Linux离线部署Dify:Docker从镜像拉取打包到无网环境中部署

文章目录 前言一、在线环境操作1. 获取dify项目(使用魔法)2.进入项目中docker目录3.镜像拉取4.查看镜像5.镜像打包6.镜像(项目)上传 二、离线环境操作1.镜像导入2.启动服务3.验证容器启动状态4.访问服务 三、部分参考链接 前言 设…

34年聘用职工被强制“自愿转保” 退休手续拖延逾一年

冯爱文,一位年满61岁的河北石家庄市井陉县税务局原聘用人员,已经一年多没有办理退休手续,没有任何收入来源,全靠子女接济和回收旧衣服为生。他在办理退休手续时被县社保局要求签署“自愿”转为企业或灵活就业人员参保申请书,因拒绝签字,退休手续被拖延超过一年。在石家庄…

英国首相批法拉奇“画饼” 经济方案异想天开

英国首相基尔斯塔默于5月29日批评极右翼政党英国改革党党首奈杰尔法拉奇提出的经济方案是“异想天开”,并警告如果该政党上台执政,英国经济将遭受重创。近期英格兰部分地区举行的地方选举中,英国改革党取得显著进展,赢得超过670个地方议会席位,并在两场市长选举和一场议会…

澳媒:嘉能可将300亿澳元资产转至澳 为合并铺路

澳大利亚金融评论报网站报道,全球大宗商品巨头嘉能可通过大规模重组将超过300亿澳元的海外资产转移到一家澳大利亚子公司,此举旨在为未来与其他大宗商品巨头达成大型合并做准备。这些资产包括嘉能可在加拿大、南非和哥伦比亚的煤矿业务,在阿根廷的铜资源业务以及在南非的锰、…

成都一男子伤人后自伤颈部 警方通报 因感情纠纷引发

2025年5月30日15时许,中纱帽街8号负一层发生一起持刀伤人事件。接警后,公安机关迅速组织警力到场处置,并当场控制了犯罪嫌疑人陆某某(男,26岁)。经初步调查,陆某某因感情纠纷前往前女友胡某某(女,24岁)的工作单位,双方发生口角后,陆某某持随身携带的水果刀将胡某某…

航电系统音频模块设计要点与技术突破

一、设计要点 音频输出模块: 1. 高可靠性 符合航空级环境标准(DO-160G),耐受温度、振动、湿度极端变化。 冗余设计:双通道输出,支持自动切换故障通道。 2. 抗干扰设计 电磁兼容性(EMC&a…

优化俄罗斯方块小游戏

前言 在之前的俄罗斯方块的小游戏中进行了修改,但是一定还存在着一些问题,欢迎大家在评论区留言。 目前是进行了以下的一些优化: 普通方块颜色除了选用马卡龙配色还增加了一些其他好看的颜色,对于特殊方块的颜色使用红橙黄绿蓝…

智能物资出入库管控系统

概述 智能物资管理系统利用RFID自动识别技术,物联网技术、人脸识别、指纹、指静脉生物识别技术,应用于军械装备的管理,可实时准确采集军械装备编配、 储存、供应、使用等数据,实时掌握军械装备物资的分布及数量 状况。细化管理到…

朱雀玄武敕令三战高考 改名事件成考题

前不久,“00后”小伙“朱雀玄武敕令”申请改名为“周天紫微大帝”的新闻引起了广泛关注。他近期正准备参加今年高考,并在网上搜寻到的模拟考试卷中看到了关于自己改名一事的考题。据了解,朱雀玄武敕令出生于2001年,父母为他起名“朱云飞”。2025年1月,他改名为“朱雀玄武敕…

北京7000余社区村配儿童主任 关爱困境儿童

5月29日上午,六一国际儿童节来临之际,丰台区青塔街道蔚园社区儿童主任韩玉兰为辖区两户困境儿童家庭送来了粮、油、饮水杯、雨伞等慰问品。北京市7000多个社区(村)每个社区(村)至少配置了1名儿童主任,他们通过入户探访、协助申请保障、解释福利政策等方式,为困境儿童家…

涨薪技术|0到1学会性能测试第90课-性能测试构建

至此关于系统资源监控、apache监控调优、Tomcat监控调优、JVM调优、Mysql调优、前端监控调优、接口性能监控调优的知识已分享完,今天开始学习性能测试流程知识。后续文章都会系统分享干货,带大家从0到1学会性能测试。 性能测试设计完成后,接下来需要将设计的策略变成现实,…

李嫣高中毕业 长发披肩神似王菲 颜值抢镜

近日,王菲与李亚鹏的女儿李嫣在2025年5月底从伦敦的高中毕业。她穿着毕业服与同学们合影,长发披肩,颜值出众。网友们纷纷表示,李嫣神似母亲王菲,在人群中格外引人注目。此前,李嫣经历了四次唇腭裂修复手术,面部状态已接近自然。责任编辑:zhangxiaohua

技术-工程-管用养修保-智能硬件-智能软件五维黄金序位模型

融智学工程技术体系:五维协同架构 基于邹晓辉教授的框架,工程技术体系重构为:技术-工程-管用养修保-智能硬件-智能软件五维黄金序位模型: math \mathbb{E}_{\text{技}} \underbrace{\prod_{\text{Dis}} \text{TechnoCore}}_{\…

中国驻美大使:大院铁幕只会自我孤立 封锁难阻科技创新

2025年5月28日,中国驻美国大使馆举办“我的中国相册——我的中国足迹”影片首映会暨现代化的中国体验活动。谢锋大使和夫人王丹、邱文星公使以及美国各界人士共200余人出席了此次活动。谢锋在致辞中表示,中国走出了一条致力于团结奋斗、共同富裕、全面发展、持续发展与和平发…

清华大学发布李兆杰教授讣告 沉痛悼念著名国际法学者

5月29日晚,清华大学法学院发布讣告,悼念李兆杰教授。李兆杰教授于2025年5月29日在北京因病逝世,享年70岁。李兆杰教授是汉族,籍贯山东省东明县,1955年出生于吉林省长春市。他曾在北京大学国际法研究所和清华大学法学院任教,是改革开放以来中国新一代国际法学者中的领军人…