当前位置: 首页 > news >正文

使用 hionic 将 Web 应用部署到鸿蒙PC平台

从 0 到 1:使用 hionic 将 Web 应用部署到鸿蒙PC平台

本教程基于hionic CLI,以React + Capacitor为例,完整演示如何从零搭建一个鸿蒙原生应用,并涵盖 Mac 环境下常见踩坑与解决方案。


目录

  1. 环境准备
  2. 安装 hionic CLI
  3. 创建 Capacitor 项目
  4. 添加 OpenHarmony 平台
  5. 修复 OpenSSL 依赖(必读!)
  6. 前端构建
  7. 在 DevEco Studio 中打开与编译
  8. 完整构建 HAP 包
  9. 部署到设备 / 模拟器
  10. 常见问题

1. 环境准备

工具说明
Node.js推荐 v18+,通过 Homebrew 安装(见下文)
npm随 Node.js 一起安装
DevEco Studio鸿蒙官方 IDE,用于编译和签名 HAP 包
hdc鸿蒙设备连接工具,随 DevEco Studio 附送
OpenHarmony SDKDevEco Studio 中配置

⚠️ 重点:Node.js 安装方式

不要使用 DevEco Studio 内嵌的 Node.js(路径包含/Applications/DevEco-Studio.app/),因为该目录是只读的,npm install -g会报EPERM错误:

npmERR!Error: EPERM: operation not permitted,mkdir'/Applications/DevEco-Studio.app/.../node_modules/hionic'

正确的做法:通过 Homebrew 安装独立的 Node.js:

# 安装 Homebrew 的 Node.jsbrewinstallnode# 验证whichnode# 应输出 /opt/homebrew/bin/nodenode-v# 应输出 v18+ 或 v20+ / v26+npm-v

Homebrew 的 Node.js 安装在/opt/homebrew下,用户有完整写入权限。


2. 安装 hionic CLI

hionic 是基于 Ionic CLI 二次开发的命令行工具,支持将 Web 项目(Capacitor / Cordova)添加 OpenHarmony 平台支持。

npminstall-ghionic

安装后验证:

hionic-v# 输出:hionic 2.1.15(或更高版本)

说明hionic的官方仓库在 atomgit.com/CPF-Ionic/capacitor-cli,更多使用说明可参考该仓库的 README。


3. 创建 Capacitor 项目

hionic 支持两种框架:cordovacapacitor。本教程以 Capacitor + React 为例。

# 语法:hionic start <框架> <项目目录> <包名> <应用名> [模板]hionic start capacitor MyApp com.nutpi.MyApp MyHarmonyApp react

执行过程说明:

  1. 创建 Vite + React 前端项目:内部调用npm create vite MyApp -- --template react
  2. 安装前端依赖:执行npm install
  3. 初始化 Capacitor:执行npx cap init MyHarmonyApp com.nutpi.MyApp

⚠️ 踩坑:npx cap init 失败

在某些环境中,hionic start执行到npx cap init时会报错:

npm error could not determine executable to run

原因:@capacitor/cli尚未安装,npx找不到可执行文件。

解决方法:手动安装 Capacitor CLI 和 Core,然后重新初始化:

cdMyAppnpminstall@capacitor/core @capacitor/cli npx cap init MyHarmonyApp com.nutpi.MyApp

成功后会在项目根目录生成capacitor.config.json


4. 添加 OpenHarmony 平台

cdMyApp hionic platformaddopenharmony

执行成功后,你会看到:

detect result: Capacitor confidence: 70% Certificate: 1. Found Capacitor packages: @capacitor/cli, @capacitor/core 2. Found Capacitor config file: capacitor.config.json 3. Capacitor CLI available Using hionic openharmony platform support Project created successfully

此时项目根目录下会生成openharmony/目录,这就是鸿蒙原生工程。

项目目录结构

MyApp/ ├── openharmony/ # OpenHarmony 原生工程目录 │ ├── entry/ # 应用主模块 │ ├── capacitor/ # Capacitor 适配层(C++ + ArkTS) │ ├── AppScope/ # 应用级配置 │ └── build-profile.json5 # 构建配置 ├── src/ # React 前端源码 ├── dist/ # 前端构建输出 ├── capacitor.config.json # Capacitor 配置 ├── index.html # 应用入口 ├── vite.config.js └── package.json

5. 修复 OpenSSL 依赖(必读!)

问题现象

此时如果直接编译,会报如下错误:

ninja: error: '.../openharmony/capacitor/libs/arm64-v8a/libssl.so.3', needed by '.../libcapacitor.so', missing and no known rule to make it ninja: error: '.../openharmony/capacitor/libs/x86_64/libssl.so.3', needed by '.../libcapacitor.so', missing and no known rule to make it

原因分析

Capacitor 适配层的 C++ 代码(HTTP/HTTPS 通信、WebSocket 等)依赖OpenSSL,CMakeLists.txt 中声明了链接:

set(OPENSSL_LIB_PATH ${NATIVERENDER_ROOT_PATH}/../../../libs/${OHOS_ARCH}) target_link_libraries(capacitor PUBLIC ... ${OPENSSL_LIB_PATH}/libssl.so.3 ${OPENSSL_LIB_PATH}/libcrypto.so.3 )

openharmony/capacitor/libs/目录为空,缺少预编译的 OpenSSL 动态库。

解决方案

官方提供了预编译好的 OpenSSL 3.5 库,仓库地址:atomgit.com/li_in/openharmony-capacitor-openssl3.5

# 克隆 OpenSSL 预编译库gitclone--depth1https://gitcode.com/li_in/openharmony-capacitor-openssl3.5.git /tmp/ohos-openssl# 复制 .so 库文件到 capacitor 的 libs 目录cp-r/tmp/ohos-openssl/libs /Users/nutpi/Desktop/study/cordova/MyApp/openharmony/capacitor/libs# 复制 OpenSSL 头文件到 cpp 目录cp-r/tmp/ohos-openssl/openssl /Users/nutpi/Desktop/study/cordova/MyApp/openharmony/capacitor/src/main/cpp/openssl# 清理临时文件rm-rf/tmp/ohos-openssl

复制后的目录结构应如下:

openharmony/capacitor/ ├── libs/ │ ├── arm64-v8a/ │ │ ├── libssl.so.3 │ │ ├── libcrypto.so.3 │ │ └── ... │ └── x86_64/ │ ├── libssl.so.3 │ ├── libcrypto.so.3 │ └── ... └── src/main/cpp/ └── openssl/ ├── arm64-v8a/include/openssl/ # arm64 头文件 └── x86_64/include/openssl/ # x86 头文件

说明:该仓库提供了arm64-v8a(真机/模拟器)和x86_64(模拟器)两个架构的预编译库,覆盖开发和部署两种场景。


6. 前端构建

Capacitor 项目需要先将 Web 资源构建为静态文件,才能集成到原生包中。

# 构建前端(Vite 打包到 dist/)hionic buildui

该命令等同于直接执行npm run build,将 React 源码构建到dist/目录。


7. 在 DevEco Studio 中打开与编译

方式一:命令行打开

hionicopenopenharmony

方式二:手动打开

直接用 DevEco Studio 打开MyApp/openharmony/目录。

配置签名

在 DevEco Studio 中:

  1. FileProject StructureSigning Configs
  2. 登录华为开发者账号,自动生成签名证书
  3. 或导入已有.p12/.cer/.p7b证书

编译构建

在 DevEco Studio 中点击BuildBuild HAP(s),或使用命令行:

# 使用 DevEco 内嵌的 Node.js 运行 hvigor/Applications/DevEco-Studio.app/Contents/tools/node/bin/node\/Applications/DevEco-Studio.app/Contents/tools/hvigor/bin/hvigorw.js\--modemodule\-pmodule=entry@default\-pproduct=default\-prequiredDeviceType=phone\assembleHap\--analyze=normal--parallel--incremental--daemon

构建成功后输出:

> hvigor BUILD SUCCESSFUL in 10 s 778 ms

生成的 HAP 包位于:

openharmony/entry/build/default/outputs/default/ ├── entry-default-signed.hap # 已签名,可直接安装 └── entry-default-unsigned.hap # 未签名

8. 完整构建 HAP 包

hionic 也封装了完整的构建命令(需先配置DEVECO_SDK_HOMEDEVECO_IDE_PATH环境变量):

# 配置环境变量exportDEVECO_SDK_HOME=/Applications/DevEco-Studio.app/Contents/sdkexportDEVECO_IDE_PATH=/Applications/DevEco-Studio.app# 构建hionic buildapp openharmony

9. 部署到设备 / 模拟器

启动模拟器

在 DevEco Studio 中:ToolsDevice Manager→ 创建并启动模拟器。

安装 HAP

# 连接设备hdc list targets# 安装 HAPhdcinstallopenharmony/entry/build/default/outputs/default/entry-default-signed.hap

一行命令部署(hionic)

hionic run openharmony

查看运行日志

hdc shell hilog|grepcapacitor

10. 常见问题

Q1:npm install -g hionic报 EPERM

原因:使用了 DevEco Studio 内嵌的 Node.js,全局安装目录只读。

解决:通过 Homebrew 重新安装 Node.js,确保which node指向/opt/homebrew/bin/node


Q2:hionic start执行到npx cap init失败

原因@capacitor/cli尚未安装,npx找不到可执行文件。

解决

npminstall@capacitor/core @capacitor/cli npx cap init MyHarmonyApp com.nutpi.MyApp

Q3:编译报错libssl.so.3 missing

原因:OpenSSL 预编译库未集成。

解决

gitclone--depth1https://gitcode.com/li_in/openharmony-capacitor-openssl3.5.git /tmp/ohos-opensslcp-r/tmp/ohos-openssl/libs openharmony/capacitor/libscp-r/tmp/ohos-openssl/openssl openharmony/capacitor/src/main/cpp/opensslrm-rf/tmp/ohos-openssl

Q4:page_text_font_size资源冲突

Warning: 'page_text_font_size' conflict, first declared at .../entry/.../float.json but declared again at .../capacitor/.../float.json

这是警告而非错误,不影响构建。两个模块都定义了同名资源,entry模块的声明优先级更高。如需消除警告,可以删除capacitor模块中重复的float.json配置。


Q5:报错FetchPackageInfo: "@ohos/hypium" failed

解决:将openharmony/capacitor/oh-package.json5中的devDependencies内容删除后重试。


总结

通过本教程,你完成了从零到一将 React Web 应用部署到鸿蒙平台的完整流程:

Web 应用 (React) │ ▼ Capacitor 封装 (跨平台桥接层) │ ▼ hionic CLI 添加 OpenHarmony 平台 │ ▼ OpenSSL 预编译库集成 ← 关键步骤,容易遗漏 │ ▼ DevEco Studio 编译 → HAP 包 │ ▼ 安装到鸿蒙设备 / 模拟器 ✅

hionic 工具链的核心价值在于:一次开发,多端部署——同一份 React/Vue/Angular 代码,可以同时构建 Android、iOS 和 OpenHarmony 三平台的原生应用。

项目地址:https://gitcode.com/jianguoxu/hionic


参考资源

  • hionic CLI 仓库:https://gitcode.com/CPF-Ionic/capacitor-cli
  • OpenSSL 预编译库:https://gitcode.com/li_in/openharmony-capacitor-openssl3.5
  • Capacitor 官方文档:https://capacitorjs.com/docs
  • OpenHarmony 开发文档:https://developer.harmonyos.com
http://www.zskr.cn/news/1455006.html

相关文章:

  • 效率提升:用快马平台为wsl环境定制自动化开发脚本工具
  • 远恒集团荣登“2026中国品牌500强”,并斩获“品牌强国黑马榜·十大投资价值品牌”
  • 石家庄市地区2026年权威甄选:黄金回收白银铂金回收优质门店 TOP5 含详细电话 - 诚金汇钻回收公司
  • OpenRocket模型火箭设计软件:从零开始掌握火箭仿真与优化
  • 保姆级教程:在Ubuntu 20.04上用Docker容器搞定PX4开发环境(附Java报错解决)
  • 企业级AI工具链部署失败率下降83%的关键配置(2024智能设置白皮书首发)
  • 零基础入门:用快马生成你的第一份vivado图文安装指南
  • 产品寿命预测实战:手把手用Python+Weibull模型评估5000次循环后的可靠性(附双侧/单侧置信区间代码)
  • 不止于杀毒:火绒安全这些隐藏功能,才是电脑高手的秘密武器
  • 跨平台无障碍设计实践:从Web、VR到教室的包容性交互框架
  • Java流程控制语句详解
  • 深度解析:SUSFS4KSU-Module内核级Root隐藏的3大核心技术
  • 真空搅拌机选型完全指南(2026版):从需求分析到设备落地 - 上海奎特机电
  • CISA KEV紧急收录Oracle WebLogic漏洞 + Android一次性修复124个漏洞:中间件与移动端攻击链完整复盘
  • 2026年PDF合并教程:小程序+在线+WPS,一看就会的合并方法 - 软件小管家
  • 【会议征稿通知 | 四川大学计算机学院主办 | IEEE出版 | EI 、Scopus稳定检索】第九届计算机信息科学与应用技术国际学术会议(CISAT 2026)
  • 4.5 传统ML与LLM的边界:什么时候用哪个
  • 基于STM32与RFM95的LoRa无线通信系统DIY指南
  • 【WCH蓝牙系列芯片】-基于CH585开发板—系统 SysTick 定时器应用
  • EmotiVoice:如何在5分钟内掌握2000种音色的情感语音合成神器
  • PLC网络耦合器(IP转换网关)的功能作用
  • AI辅助开发:让快马智能生成多绘屏保卸载脚本,并解释系统命令奥秘
  • 2026年6月肇庆贵金属回收权威门店排行 TOP5 黄金 + 铂金 + 白银回收 附电话地址 - 中业金奢再生回收中心
  • FPV竞速无人机入门指南:从模拟器到实战的完整路径
  • DataWorks Data Agent 助力菜鸟 AI 数据研发 SuperETL 实践落地
  • 在Ubuntu 22.04上从零搭建SUMO仿真环境:新手避坑与第一个Hello World交通流
  • 2026年6月孝感贵金属回收权威门店排行 TOP5 黄金 + 铂金 + 白银回收 附电话地址 - 中业金奢再生回收中心
  • AI工具整合失效真相大起底,87%企业卡在L2→L3断层(附Gartner验证的4步穿透法)
  • 绝区零自动化革命:3步掌握智能游戏辅助工具的核心玩法
  • AssetRipper完全指南:轻松提取Unity游戏资源的终极工具