Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用程序的开源框架。通过将 Chromium 渲染引擎和 Node.js 运行时嵌入到二进制文件中,Electron 允许开发者使用统一的 Web 技术栈,创建可在 Windows、macOS、Linux 和 HarmonyOS 上运行的原生桌面应用。
⚠️ 重要提示: 如果需要从源码编译 Electron,必须使用 Ubuntu 22.04 环境。但对于大多数开发场景,直接使用预编译产物即可。
使用华为账号登录 Electron HarmonyOS 仓库[1]。
.zip 格式,大小约 200-300MB
下载 Electron Release 包
💡 提示: 建议下载最新日期的版本以获得最新的 bug 修复和功能更新。
将下载的压缩包逐层解压到项目目录,最终文件结构应如下:
ohos_hap/
├── electron/
│ ├── libs/ # 原生库文件
│ │ ├── libelectron.so # Electron 核心引擎
│ │ ├── libadapter.so # 鸿蒙适配层
│ │ ├── libffmpeg.so # 多媒体支持
│ │ └── libc++_shared.so
│ └── src/
└── web_engine/ # Web 引擎适配模块
确保以下关键库文件存在于 electron/libs/arm64-v8a/ 目录:
libelectron.so (约 150-200MB)libadapter.so (约 5-10MB)libffmpeg.so (约 10-20MB)libc++_shared.so (约 1-2MB)
项目目录结构
将你的 Electron 应用代码(或编译产物)放置到以下目录:
web_engine/src/main/resources/resfile/resources/app/
典型的 Electron 应用应包含以下文件:
app/
├── main.js # 主进程入口文件(必需)
├── package.json # 项目配置文件(必需)
├── index.html # 渲染进程页面
├── renderer.js # 渲染进程逻辑
└── node_modules/ # 依赖包(如果有)
如果你还没有 Electron 应用,可以使用以下简单示例:
main.js (主进程):
const { app, BrowserWindow } = require('electron');
const path = require('path');
function createWindow() {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
});
win.loadFile('index.html');
}
app.whenReady().then(createWindow);
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
package.json:
{
"name": "electron-harmonyos-app",
"version": "1.0.0",
"main": "main.js",
"scripts": {
"start": "electron ."
}
}
index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello HarmonyOS!</title>
</head>
<body>
<h1>欢迎使用 Electron on HarmonyOS!</h1>
<p>这是运行在鸿蒙系统上的 Electron 应用</p>
</body>
</html>

应用代码放置位置
File → Openohos_hap 项目目录如果是首次运行,需要配置应用签名:
File → Project Structure → Signing ConfigsShift + F10)
运行应用
⏱ 提示: 首次编译可能需要 5-10 分钟,请耐心等待。
应用成功启动后,你应该能在鸿蒙设备上看到 Electron 应用界面。

运行效果
原因: 原生库文件未正确放置
解决方案:
electron/libs/arm64-v8a/ 目录是否包含所有 .so 文件原因: Electron 应用代码路径不正确或 main.js 有错误
解决方案:
resources/app/ 目录下main.js 中的路径是否正确原因: USB 调试未开启或驱动未安装
解决方案:
设置 → 系统 → 开发者选项原因: 签名配置不正确
解决方案:
build-profile.json5 中的签名配置正确Build → Clean Project)原因: 资源占用过高或设备性能不足
解决方案:
chrome://inspect 进行性能分析通过适配器可以调用鸿蒙系统的原生 API,例如:
// 在 ArkTS 中定义适配器
export class CustomAdapter extends BaseAdapter {
callNativeFunction() {
// 调用鸿蒙原生 API
}
}
// 在 Electron 中通过 IPC 调用
ipcRenderer.invoke('native-call').then(result => {
console.log(result);
});
如果需要使用 Node.js 原生模块(如 sqlite3),请参考项目 docs/ 目录下的相关文档:
鸿蒙平台Electron加载addon(基于node-sqlite3-5.1.7).pdf保持清晰的项目结构:
your-electron-app/
├── main/ # 主进程代码
├── renderer/ # 渲染进程代码
├── preload/ # 预加载脚本
├── assets/ # 静态资源
└── utils/ # 工具函数
contextIsolationnodeIntegration(除非必要)preload 脚本暴露受控 API虽然代码可以跨平台运行,但仍需注意:
path.join() 而非硬编码通过本指南,你已经学会了如何:
现在你可以开始构建自己的跨平台 Electron 应用了!如果遇到问题,请参考上述资源或在社区寻求帮助。
欢迎为本项目贡献代码和文档!
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)最后更新: 2025 年 11 月
维护者: @jianguoxu[13]
💡 温馨提示: 如果本指南对你有帮助,欢迎 Star ⭐ 本项目仓库!
参考资料
[1]
Electron HarmonyOS 仓库: https://devcloud.cn-north-4.huaweicloud.com/codehub/project/b19f5ea8ffd4492ea8c06ca2ebf3f858/codehub/2821214/home?ref=electron34-release
[2]
Electron 官方文档: https://www.electronjs.org/zh/docs/latest/
[3]
DevEco Studio 文档: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-tools-overview
[4]
HarmonyOS 开发者中心: https://developer.huawei.com/consumer/cn/harmonyos/
[5]
鸿蒙版 Electron: https://gitcode.com/openharmony-sig/electron
[6]
本项目代码仓库: https://gitcode.com/jianguoxu/electrondemo
[7]
Electron 示例应用: https://github.com/electron/electron-quick-start
[8]
Electron 中文教程: https://www.electronjs.org/zh/docs/latest/tutorial/quick-start
[9]
鸿蒙 ArkTS 语法: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/application-dev-guide
[10]
Node.js Addon 开发: https://nodejs.org/api/addons.html
[11]
Electron Discord 社区: https://discord.gg/electron
[12]
问题反馈: https://gitcode.com/jianguoxu/electrondemo/issues
[13]
@jianguoxu: https://gitcode.com/jianguoxu