惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
I
InfoQ
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
博客园 - Franky
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
月光博客
月光博客
罗磊的独立博客

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理,
已有React Native工程如何适配HarmonyOS
华为开发者联盟 · 2025-12-18 · via 人人都是产品经理

本文原创发布在华为开发者联盟社区,欢迎前往与更多开发者进行互动。
更多相关问题可点击原帖进行交流:已有React Native工程如何适配HarmonyOS 。

问题描述

概述
React Native框架是一个基于JavaScript与React的开源框架,主要用于开发原生渲染的移动应用程序。React Native for OpenHarmony(RNOH)在React Native原有能力之上,进行了深度的鸿蒙化适配与扩展,使开发者能够基于熟悉的React技术栈,高效地构建适用于HarmonyOS的应用程序。

当前RNOH适配的React Native有两个版本0.72.5和0.77.1。0.72.5版本框架和三方库已经比较成熟,最新的版本为0.72.99,如果当前项目的RN版本低于该版本,可将当前项目的RN版本升级后,使用该版本进行HarmonyOS应用的构建,升级过程可参考RN升级需要开发者适配整理。RNOH会不断迭代和更新。最新版本及使用说明可查看ohos_react_native文档

下文将详细描述如何基于已有的RN工程适配HarmonyOS:
1、环境变量配置

  • Windows环境:
    此电脑>属性>高级系统设置>高级>环境变量中,在系统变量中点击新建,添加变量名为:RNOH_C_API_ARCH,变量值为 1。
  • Mac环境:
    编辑bash配置文件(例如~/.bash_profile、~/.bashrc或~/.zshrc)并在末尾添加以下行:

复制

export RNOH_C_API_ARCH=1

b.确认环境变量是否成功设置。在终端中输入以下命令:

复制

echo $RNOH_C_API_ARCH

如果输出为1,则表示环境变量已成功设置。

2、安装HarmonyOS版RN(RNOH)
打开RN工程,在根目录终端窗口中先执行npm install react-native@0.72.5将原RN版本修改为0.72.5,再执行npm install @react-native-oh/react-native-harmony安装RNOH,详细可参考RNOH依赖引入

3、新建HarmonyOS工程
在RN工程根目录新建harmony文件夹,并在该文件夹中初始化一个HarmonyOS工程,详细步骤参考创建HarmonyOS工程补充ArkTS侧代码章节
目录结构:

复制

RN                                               // RN工程

├──harmony                                       // harmony工程

│  ├──entry/src/main/cpp                         // native相关配置

│  │  ├──generated                               // codegen自动生成的桥接代码

│  │  ├──CMakeLists.txt

│  │  └──PackageProvider.cpp

│  ├──entry/src/main/ets

│  │  ├──entryability

│  │  │  └──EntryAbility.ets

│  │  ├──pages

│  │  │  └──Index.ets                            // harmony侧入口

│  │  └──RNPackagesFactory.ets

│  └──entry/src/main/resources/rawfile           // bundle、静态资源存放目录

├──App.tsx

├──index.js                                      // 入口文件

├──metro.config.js                               // 打包配置

4、三方库替换
将原工程中的三方库替换为适配HarmonyOS的三方库版本,根据库名在RNOH三方库文档中搜索。文档中没有的三方库说明未进行适配,若为纯JS三方库可直接使用原库,否则建议优先在已适配库中寻找替代库。三方库的使用方法请参考Markdown文档中的步骤进行安装配置,需注意部分三方库需要使用Codegen生成桥接代码。

5、添加RN工程打包命令及打包配置

  • 打开根目录下的json,在scripts下新增RNOH打包命令:

复制

“dev”: “react-native bundle-harmony –dev”

  • 修改config.js(建议不同平台使用不同的metro配置文件)

复制

const {mergeConfig, getDefaultConfig} = require(‘@react-native/metro-config’);

const {createHarmonyMetroConfig} = require(‘@react-native-oh/react-native-harmony/metro.config’);

/**

* @type {import(“metro-config”).ConfigT}

*/

const config = {

transformer: {

getTransformOptions: async () => ({

transform: {

experimentalImportSupport: false,

inlineRequires: true,

},

}),

},

};

module.exports = mergeConfig(getDefaultConfig(__dirname), createHarmonyMetroConfig({

reactNativeHarmonyPackageName: ‘@react-native-oh/react-native-harmony’,

}), config);

6、与平台相关代码适配

7、打包运行

  • 执行以下命令生成bundle和桥接代码:

复制

npm run dev

npm run codegen

  • 打开Harmony工程,连接真机并运行工程
  • 点击 File > Project Structure,在弹窗界面点击 Signing Configs,勾选 Support OpenHarmony 和 Automatically generate signature,然后点击 Sign In 登录华为账号,并签名。
  • 等待工程依赖同步完成后,点击运行图标执行run entry运行工程。