ohos_ebook_reader_electron:基于 HarmonyOS 与 Electron 的电子书阅读器项目

基于 Electron 构建的 OpenHarmony 跨平台电子书阅读器,支持多格式阅读、书架管理与个性化排版,适配鸿蒙多端设备。

Branch1Tags0

OHOS Ebook Reader (Electron)

基于 HarmonyOS 壳工程 + Electron Web 内核的电子书阅读器

HarmonyOS Electron License


📖 项目简介

本项目采用 Electron Web 应用 + HarmonyOS 壳工程 的混合架构:

  • Electron Web 层:提供完整的电子书阅读功能(书架管理、阅读器、格式解析等),运行在 HarmonyOS 的 ArkWeb 引擎中
  • HarmonyOS 壳工程:通过 web_engine 模块加载 Electron 应用,提供系统级能力(窗口管理、文件访问、N-API 插件等)

这种架构让 Electron 应用无需修改即可在鸿蒙设备上运行,同时保留原生体验。

img.png

🏗️ 项目结构

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

真机测试

  1. 连接鸿蒙设备或启动模拟器
  2. 点击 Run → Run 'electron'
  3. 应用自动安装启动

⚠️ 首次运行需确保签名配置正确(build-profile.json5 中的 signingConfigs


🧩 Electron Web 层开发说明

本地调试

# 安装依赖
npm install

# 启动 Electron 开发模式
npm run dev

# 或直接启动
npm start

部署到鸿蒙

Web 资源位于项目根目录(main.jsindex.htmljs/),构建时会自动打包到 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 开源。


相关链接

Introduction

基于 Electron 构建的 OpenHarmony 跨平台电子书阅读器,支持多格式阅读、书架管理与个性化排版,适配鸿蒙多端设备。

Customize my domain