news 2026/5/2 6:48:39

【开源鸿蒙跨平台开发先锋训练营】DAY 2 React Native for OpenHarmony 开发笔记与实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【开源鸿蒙跨平台开发先锋训练营】DAY 2 React Native for OpenHarmony 开发笔记与实战指南

本笔记详细记录了在 Windows 11 环境下搭建 React Native for OpenHarmony (RNOH) 开发环境、创建多终端工程、以及代码提交至 AtomGit 的全流程。

一、 开发环境搭建

1.1 前置软件安装

在开始配置 OpenHarmony 特有环境前,需完成以下基础软件的安装(参考已验证的教程):

  • VS Code: 代码编辑器 安装指南
  • Git: 版本控制工具 安装指南
  • Java (JDK 17): 必须安装 JDK 17,RNOH 依赖此版本 安装指南
  • Android Studio: 用于管理通用移动端依赖(可选,建议安装) 安装指南
  • DevEco Studio: 鸿蒙应用开发核心 IDE 安装指南

完成安装后启动运行界面如下:

系统提供了很多模板,在文件-新建项目下,可以非常方便的新建项目。

1.2 OpenHarmony SDK 下载与配置

  1. 打开DevEco Studio,进入Settings>SDK
  2. 勾选并下载API 10 (或更高版本)的 SDK。确保同时下载了OpenHarmony SDKHarmonyOS SDK(视具体目标设备而定)。
  3. 在 SDK Tools 标签页中,勾选安装:
    • Native(C++ 工具链)
    • CMake
    • Command Line Tools(hdc 工具在此包含)

1.3 环境变量配置 (关键)

为了支持 React Native 的 C++ 编译和命令行工具,需配置系统环境变量:

  1. JAVA_HOME: 指向 JDK 17 安装目录 (例如C:\Program Files\Java\jdk-17).
  2. OHOS_SDK_HOME: 指向 DevEco SDK 安装目录 (例如C:\Users\YourUser\AppData\Local\OpenHarmony\Sdk).
  3. HDC_HOME(可选): 指向 toolchains 目录%OHOS_SDK_HOME%\10\toolchains.
  4. Path: 添加以下路径到系统 Path 变量中:
    • %JAVA_HOME%\bin
    • %OHOS_SDK_HOME%\10\toolchains(用于 hdc 命令)
    • %OHOS_SDK_HOME%\10\native\build-tools\cmake\bin(用于 cmake 编译)

验证: 打开 PowerShell 输入hdc -vcmake -version,应能正确输出版本号。

1.4 多设备调试驱动

  • 真机 (Phone/Pad): 开启开发者模式 -> USB 调试。连接电脑后,使用hdc list targets查看设备 ID。
  • 模拟器: 在 DevEco Studio > Device Manager 中创建 API 10+ 的模拟器并启动。
  • 开发板 (如 DAYU200): 通过 USB 连接,确保安装了相应的 USB 串口驱动。

我们在开发过程中需要经常用到模拟器,所以一定要学会模拟器的安装方法。选中Device Manager 根据本机配置创建。


在如下界面创建新机并选择合适的配置。


二、 Git 与 AtomGit 仓库操作

2.1 创建 AtomGit 仓库

  1. 登录 AtomGit。

  2. 点击右上角 “+” -> “新建仓库”。

  3. 填写仓库信息:

    • 仓库名称:rnoh-cross-platform-demo(示例)
    • 描述: React Native for OpenHarmony 跨平台开发实战项目
    • 公开性: 选择公开
    • 初始化: 勾选 “添加 README.md”, “.gitignore” (选择 Node 或 C++ 模板), “开源许可证” (推荐 Apache-2.0 或 MIT)。
  4. 创建完成后,复制 HTTPS 或 SSH 克隆地址。

2.2 本地 Git 初始化与配置

在本地工作区执行:

# 全局配置用户签名gitconfig --global user.name"YourName"gitconfig --global user.email"your.email@example.com"# 克隆仓库gitclone https://atomgit.com/YourUsername/rnoh-cross-platform-demo.gitcdrnoh-cross-platform-demo

2.3 分支管理规范

  • main: 主分支,存放稳定版本代码。
  • dev: 开发分支,日常开发使用。
  • feature/xxx: 功能分支,开发特定功能时从 dev 切出。
# 创建并切换到开发分支gitcheckout -b dev

三、 工程创建与多终端运行验证

3.1 创建 RNOH 工程

使用 React Native 官方 CLI 结合 RNOH 模板创建项目:

# 1. 初始化标准 RN 项目 (版本需参考 RNOH 官方推荐,如 0.72.5)npx react-native@0.72.5 init MyRNOHApp# 2. 进入项目并安装鸿蒙适配依赖cdMyRNOHAppnpminstall@rnoh/react-native-openharmony# 3. 补全鸿蒙工程结构 (参考 RNOH 官方文档或模板)# 通常需要将 sample 中的 harmony 文件夹复制到项目根目录# 并修改 harmony/build-profile.json5 中的签名配置

3.2 工程配置与依赖

  1. Local Properties: 在harmony/local.properties中指定 SDK 路径:
    sdk.dir=C:/Users/YourUser/AppData/Local/OpenHarmony/Sdk
  2. 权限声明: 在harmony/entry/src/main/module.json5中添加网络权限等:
    "requestPermissions":[{"name":"ohos.permission.INTERNET"}]

3.3 编译与运行

确保 Metro 服务已启动:

npmstart
场景 A: 模拟器/真机运行

使用 DevEco Studio 打开harmony目录:

  1. 等待 Sync 完成。
  2. 在右上角选择运行设备(模拟器或真机)。
  3. 点击Run ‘entry’(绿色三角形)。
场景 B: 命令行运行 (进阶)
# 确保 hdc 连接正常cdharmony ./hvigorw.bat assembleHap --mode debug hdcinstallentry/build/default/outputs/default/entry-default-signed.hap

3.4 运行日志与证据

  • 日志查看: 在 DevEco Studio 底部Log窗口,或使用命令hdc hilog
  • 截图保存: 运行成功后,截取模拟器/真机画面,保存为run_evidence_emulator.pngrun_evidence_device.png放入docs目录。

四、 代码提交规范

完成开发验证后,将代码推送到 AtomGit。

4.1 清理与忽略

确保.gitignore包含以下内容,避免提交临时文件:

node_modules/ .idea/ .vscode/ android/app/build/ ios/Pods/ harmony/entry/build/ harmony/.hvigor/ *.hap local.properties

4.2 提交代码

# 1. 添加文件gitadd.# 2. 提交 (使用清晰的 Commit Message)gitcommit -m"feat: 完成RNOH工程初始化及多端运行适配"# 格式建议: type(scope): subject# type: feat(新功能), fix(修补), docs(文档), chore(构建/依赖)# 3. 推送到远程 dev 分支gitpush origin dev

4.3 合并到主分支 (Release)

在 AtomGit 平台发起 Pull Request,或在本地合并:

gitcheckout maingitmerge devgitpush origin main

五、 常见问题与避坑指南 (Troubleshooting)

5.1 Metro 连接问题

现象: App 启动后一直显示 “Connecting to Metro…” 或白屏。
原因: 真机/模拟器无法访问电脑端的 8081 端口。
解决:
必须使用 hdc 进行端口转发:

hdc rport tcp:8081 tcp:8081
  • 确保电脑和手机在同一 Wi-Fi 下(如果是无线调试)。
  • 检查harmony/entry/src/main/resources/rawfile/rn_config.json中的bundleUrl是否正确指向了电脑 IP。

5.2 C++ 编译报错 (CMake Error)

现象: Sync 或 Build 时报错CMake Error: ...Ninja not found
原因: 环境变量未生效或 SDK 路径配置错误。
解决:

  • 检查local.properties中的路径分隔符是否为/(Windows 下不要用单反斜杠\)。
  • 确保cmake命令在终端可直接执行。
  • 如果使用 DevEco Studio 4.0+,建议清理.hvigorbuild目录后重试。

5.3 签名失败

现象: 安装 HAP 时提示INSTALL_FAILED_VERIFY_APP_PKCS7_FAIL
解决:

  • 必须在 DevEco Studio 中配置自动签名 (Project Structure > Signing Configs > Automatically generate signature)。
  • 如果是真机,需要确保设备 UDID 已添加到签名文件中。

六、 开发感悟与经验总结 (Insights)

6.1 架构视角的转变

与 Android/iOS 的 React Native 不同,RNOH 采用了更激进的C-API 架构。这意味着 JavaScript 代码直接通过 N-API 与 C++ 层交互,最后通过 ArkUI 的 XComponent 进行渲染。

  • 优势: 理论上性能上限更高,因为绕过了部分 Java/JS Bridge 的开销。
  • 挑战: 对 C++ 环境依赖更重,初次配置比 Android 复杂,需要开发者对 Native 编译流程有一定了解。

6.2 版本“强绑定”

RNOH 目前处于快速迭代期,版本兼容性极为敏感:

  • RN 版本: 必须严格使用 RNOH 官方文档指定的 React Native 版本(如0.72.5),不要随意升级到最新版。
  • API 版本: OpenHarmony API 10 和 API 11 的底层接口差异较大,务必确认 SDK 版本与 RNOH 版本的对应关系。

6.3 跨平台开发的“最后一公里”

虽然 React Native 实现了“一次编写,到处运行”,但在鸿蒙平台上,目前仍需手动处理不少“最后一公里”的工作:

  • 第三方库的适配(如相机、地图)往往需要寻找对应的ohos适配版本或自己实现 TurboModule。
  • 因此,不仅要懂 React,还要适当补充 ArkTS 和 C++ 的知识,这将是未来鸿蒙跨端开发者的核心竞争力。

七、 生态资源

  • RNOH 核心仓库: react-native-openharmony
  • 三方库适配列表: RNOH 三方库列表
  • 官方文档: RNOH 文档中心

欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 8:32:39

《uv 终极教程:安装、镜像配置与 pip 无缝迁移》

一、uv 安装步骤(三大主流系统) 以下是 uv 的安装步骤和它与 pip 的常用命令对比,方便你快速上手并迁移使用。 推荐方式(官方一键脚本,最快最稳) macOS/Linux 打开终端,执行:curl -L…

作者头像 李华
网站建设 2026/4/30 23:05:30

基于偏振物理模型的水下图像去雾MATLAB实现

一、核心算法框架 1. 偏振成像物理模型 水下偏振去雾基于以下数学模型: IJ⋅e−βdB⋅(1−e−βd)IJ⋅e^{−βd}B⋅(1−e^{−βd})IJ⋅e−βdB⋅(1−e−βd) 其中:III:观测图像强度JJJ:目标反射光强度BBB:后向散射光强…

作者头像 李华
网站建设 2026/5/1 4:48:56

动量投资策略:利用价格趋势获取收益

动量投资策略:利用价格趋势获取收益 关键词:动量投资策略、价格趋势、收益获取、金融市场、量化分析、投资组合、技术指标 摘要:本文围绕动量投资策略展开,深入探讨了如何利用价格趋势来获取收益。首先介绍了动量投资策略的背景,包括目的、预期读者、文档结构和相关术语。…

作者头像 李华
网站建设 2026/4/30 0:11:02

白雪山图志:那些值得收藏的雪山图片

《美文美图每日一推》今天推荐的是关于白皑皑雪山的图片素材,共有4张内容,如果有宝子们想要商用记得需要获摄图网版权授权©后呦!!!🏢, 当然你也可以在平台检索当前主题:#晨雾# #星空# #雪粒# #黄昏#,触达更多关于…

作者头像 李华
网站建设 2026/4/30 15:48:44

springboot电动车租赁平台管理系统

背景与意义市场需求驱动随着城市化进程加快和环保意识提升,电动车作为绿色出行工具需求激增。共享经济模式在交通领域的渗透使得电动车租赁成为解决短途出行、缓解交通拥堵的有效方案。传统租赁管理依赖人工操作,效率低且易出错,数字化平台成…

作者头像 李华
网站建设 2026/4/28 22:07:40

从理论到代码:Agentic AI实时响应优化的提示工程实现与调试技巧

Agentic AI实时响应优化:提示工程从理论到代码的实战指南 引言:为什么你的Agent响应总是“慢半拍”? 你有没有遇到过这样的场景: 用Agent做客服,用户问“我的订单什么时候到”,Agent磨磨蹭蹭10秒才回复&…

作者头像 李华