基于 Electron 构建的 OpenHarmony 跨平台电子书阅读器,支持多格式阅读、书架管理与个性化排版,适配鸿蒙多端设备。
OHOS Ebook Reader (Electron)
基于 HarmonyOS 壳工程 + Electron Web 内核的电子书阅读器
📖 项目简介
本项目采用 Electron Web 应用 + HarmonyOS 壳工程 的混合架构:
- Electron Web 层:提供完整的电子书阅读功能(书架管理、阅读器、格式解析等),运行在 HarmonyOS 的 ArkWeb 引擎中
- HarmonyOS 壳工程:通过
web_engine模块加载 Electron 应用,提供系统级能力(窗口管理、文件访问、N-API 插件等)
这种架构让 Electron 应用无需修改即可在鸿蒙设备上运行,同时保留原生体验。

🏗️ 项目结构
ohos_hap/
│
├── AppScope/ # 应用级配置(包名、图标、签名)
│ ├── app.json5 # 应用元信息(bundleName = com.huawei.ohos_electron)
│ └── resources/
│
├── electron/ # 鸿蒙模块:壳工程入口
│ ├── src/main/ets/ # ArkTS 页面和 Ability
│ │ ├── pages/ # UI 页面(Index.ets, SubWindow.ets 等)
│ │ ├── entryability/ # Ability 生命周期管理
│ │ └── extensionAbility/ # 扩展能力
│ ├── libs/arm64-v8a/ # 预编译 native 库
│ │ ├── libadapter.so # Electron ↔ HarmonyOS 适配层
│ │ ├── libelectron.so # Electron 核心运行时
│ │ └── libffmpeg.so # 媒体解码
│ └── oh_modules/web_engine/ # 依赖的 web_engine 模块
│
├── web_engine/ # 鸿蒙模块:Web 引擎核心
│ ├── src/main/ets/
│ │ ├── adapter/ # HarmonyOS API 适配器(50+ 个适配器)
│ │ │ ├── AppWindowAdapter.ets
│ │ │ ├── DialogAdapter.ets
│ │ │ ├── FileManagerAdapter.ets
│ │ │ ├── MediaAdapter.ets
│ │ │ └── ...
│ │ ├── jsbindings/ # JS ↔ ArkTS 双向绑定接口
│ │ ├── components/ # Web 窗口组件
│ │ └── common/ # 通用工具与 DI 容器
│ ├── src/main/cpp/types/ # N-API native 类型定义
│ └── src/main/resources/resfile/resources/app/
│ └── README.md # 内嵌 Electron 应用说明(与根目录同步)
│
├── js/ # Electron Web 应用 JS 模块
│ ├── app.js # 应用主逻辑
│ ├── bookshelf.js # 书架管理
│ ├── reader.js # 阅读器核心
│ ├── import.js # 书籍导入
│ ├── settings.js # 设置管理
│ └── storage.js # 数据存储(IndexedDB)
│
├── main.js # Electron Web 应用入口
├── index.html # 应用 UI 布局
├── package.json # 前端依赖配置
│
├── docs/ # 技术文档与示例
│ ├── electron-example.zip
│ ├── ets-adapter.zip
│ ├── callArkTSFunction接口文档与示例.zip
│ ├── 鸿蒙平台Electron加载addon(基于node-sqlite3-5.1.7).pdf
│ └── electron调用ets指导文档0411.pdf
│
├── hvigor/ # 鸿蒙构建配置
│ └── hvigor-config.json5
├── build-profile.json5 # 模块定义(electron + web_engine)
├── hvigorfile.ts # 构建脚本入口
│
├── oh-package.json5 # 项目级 ohpm 依赖
└── oh_modules/ # ohpm 依赖缓存
✨ 核心功能
| 功能 | 说明 |
|---|---|
| 📚 多格式支持 | EPUB、TXT 等电子书格式 |
| 📖 书架管理 | 导入、删除、分类、搜索 |
| 🔖 阅读进度 | 自动保存,跨会话恢复 |
| 🎨 自定义主题 | 日间/夜间模式,字体大小调节 |
| 📑 目录导航 | 支持 EPUB 目录结构解析 |
| 📱 响应式设计 | 适配手机、平板、折叠屏 |
🔧 技术架构
┌─────────────────────────────────────────────────────┐
│ HarmonyOS Shell │
│ ┌──────────────────────────────────────────────┐ │
│ │ electron 模块 (ArkTS) │ │
│ │ ┌─────────────┐ ┌──────────────────────┐ │ │
│ │ │ EntryAbility │ │ SubWindow / Node │ │ │
│ │ │ (主窗口) │ │ (子窗口/窗口管理) │ │ │
│ │ └──────┬──────┘ └──────────────────────┘ │ │
│ └─────────┼────────────────────────────────────┘ │
│ │ 加载 │
│ ┌─────────▼────────────────────────────────────┐ │
│ │ web_engine 模块 │ │
│ │ ┌────────────────┐ ┌──────────────────┐ │ │
│ │ │ Adapter 层 │ │ JsBinding 层 │ │ │
│ │ │ (50+ 鸿蒙API │ │ (双向调用桥) │ │ │
│ │ │ 适配器) │ │ │ │ │
│ │ └────────┬───────┘ └────────┬─────────┘ │ │
│ │ │ │ │ │
│ │ ┌────────▼────────────────────▼─────────┐ │ │
│ │ │ ArkWeb (WebView) │ │ │
│ └──────────────┬─────────────────────────────┘ │
└─────────────────┼───────────────────────────────────┘
│ 渲染
┌─────────────────▼───────────────────────────────────┐
│ Electron Web 应用 │
│ HTML + CSS + JS (main.js, index.html, js/*) │
│ - 书架管理 / 阅读器 / 设置 │
│ - IndexedDB 本地存储 │
│ - N-API addon 支持 (node-sqlite3 等) │
└─────────────────────────────────────────────────────┘
🚀 构建与运行
环境要求
| 工具 | 版本 |
|---|---|
| DevEco Studio | 最新版本 |
| HarmonyOS SDK | API 23 (6.1.1) |
| Node.js | v16+ |
| Electron (源码参考) | ^34.0.0 |
构建 HAP 包
# 1. 在 DevEco Studio 中打开项目根目录
# 2. 安装 ohpm 依赖
ohpm install
# 3. 构建
# 菜单:Build → Build Hap(s)/APP(s) → Build Hap(s)
# 4. 产物路径
# electron/build/default/outputs/default/electron-default-unsigned.hap
真机测试
- 连接鸿蒙设备或启动模拟器
- 点击 Run → Run 'electron'
- 应用自动安装启动
⚠️ 首次运行需确保签名配置正确(
build-profile.json5中的signingConfigs)
🧩 Electron Web 层开发说明
本地调试
# 安装依赖
npm install
# 启动 Electron 开发模式
npm run dev
# 或直接启动
npm start
部署到鸿蒙
Web 资源位于项目根目录(main.js、index.html、js/),构建时会自动打包到 HAP 中。
如需手动同步,对应路径为:
web_engine/src/main/resources/resfile/resources/app/
├── main.js
├── index.html
├── js/
└── package.json
📂 文档汇总
| 文档 | 说明 |
|---|---|
| Electron 框架命令行参数支持说明 | 命令行参数详解 |
| callArkTSFunction 接口文档与示例 | JS 调用 ArkTS 方法 |
| Electron 调用 ETS 指导文档 | 跨语言调用指南 |
| 鸿蒙平台 Electron 加载 addon | N-API addon 适配方案 |
| ETS Adapter 示例 | 适配器模式参考 |
| Electron 示例工程 | 完整示例 |
📄 许可证
本项目基于 MIT License 开源。
相关链接