[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-83296":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":9,"trendingCount":15,"starSnapshotCount":15,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},83296,"OHSidian","HanversionOvO\u002FOHSidian","HanversionOvO","Using Obsidian on your HarmonyOS PC or tablet",null,"TypeScript",69,5,52,4,0,1,17,10,2.33,false,"main",true,[],"2026-06-12 02:04:33","\u003Cp align=\"center\">\n  \u003Cimg src=\"AppScope\u002Fresources\u002Fbase\u002Fmedia\u002FstartIcon.png\" alt=\"OHsidian Logo\" width=\"120\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">OHsidian\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>Obsidian for HarmonyOS\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  在 HarmonyOS 设备上运行你熟悉的 Obsidian 笔记体验 —— 支持多窗口、华为账号一键登录、华为云同步以及完整的系统级原生适配。\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FHarmonyOS-6.0.2%2822%29-blue?logo=harmonyos\" alt=\"HarmonyOS\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FObsidian-1.12.7-purple?logo=obsidian\" alt=\"Obsidian\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FArkTS-API%2022-orange\" alt=\"ArkTS\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-BSD%203--Clause-green\" alt=\"License\" \u002F>\n\u003C\u002Fp>\n\n---\n\n## 目录\n\n- [项目简介](#项目简介)\n- [技术架构](#技术架构)\n- [功能特性](#功能特性)\n- [模块结构](#模块结构)\n- [适配层](#适配层)\n- [华为云同步](#华为云同步)\n- [构建与运行](#构建与运行)\n- [项目结构](#项目结构)\n- [依赖说明](#依赖说明)\n- [许可协议](#许可协议)\n- [致谢](#致谢)\n\n---\n\n## 项目简介\n\n**OHsidian** 是 Obsidian 笔记应用在 HarmonyOS（鸿蒙）平台上的非官方移植项目。它并非重新实现 Obsidian，而是通过构建一个完整的 Electron 兼容层，将原版 Obsidian（`obsidian.asar`）运行在 HarmonyOS 原生运行时之上。\n\n核心思路是：**用 HarmonyOS 原生能力模拟 Electron API 表面**，通过 C++ 原生库（`libadapter.so`）+ ArkTS 适配层 + JSBind 桥接，让 Obsidian 的 Node.js\u002FElectron 运行时在 HarmonyOS 上正常运转。同时，项目深度集成了华为生态能力 —— 账号 Kit、云存储 Kit、状态栏扩展等，让体验更像原生应用。\n\n| 项目信息 | |\n|---------|------|\n| 应用 ID | `com.mikannqaq.obsidian` |\n| 版本号 | 1.0.0（versionCode: 1000000） |\n| 目标 SDK | HarmonyOS 6.0.2(22) \u002F API 22 |\n| 目标设备 | 2in1（折叠屏\u002F平板）、平板 |\n| 开发语言 | ArkTS (TypeScript) |\n| 构建系统 | Hvigor |\n| 内核版本 | Obsidian 1.12.7 |\n\n---\n\n## 技术架构\n\n```\n┌──────────────────────────────────────────────────────┐\n│                     Obsidian 1.12.7                   │\n│                   (obsidian.asar)                     │\n├──────────────────────────────────────────────────────┤\n│               Electron API Compatibility              │\n│    ┌──────────────┐  ┌──────────────┐                │\n│    │  @electron\u002F   │  │   Node.js    │                │\n│    │    remote     │  │   Runtime    │                │\n│    └──────┬───────┘  └──────┬───────┘                │\n├──────────┼──────────────────┼────────────────────────┤\n│          │     JSBind 桥接层  │                        │\n│          ▼                  ▼                        │\n│  ┌──────────────────────────────────────┐            │\n│  │           C++ libadapter.so           │            │\n│  └──────────────────────────────────────┘            │\n├──────────────────────────────────────────────────────┤\n│               ArkTS 适配层 (~50 Adapters)              │\n│  CloudSync │ FileSys │ Notify │ IME │ Theme │ ...    │\n├──────────────────────────────────────────────────────┤\n│              HarmonyOS Native Runtime                 │\n│   Ability │ ArkUI │ AccountKit │ CloudFoundation     │\n└──────────────────────────────────────────────────────┘\n```\n\n**分层说明：**\n\n- **Obsidian 层** —— 原版 `obsidian.asar`，未经修改的 Obsidian 1.12.7 应用代码\n- **Electron 兼容层** —— `@electron\u002Fremote` 提供 remote 模块 API，`main.js` 负责加载 asar 和更新管理\n- **JSBind 桥接层** —— 连接 JS 运行时与 ArkTS 原生层，将 Electron API 调用转发到对应适配器\n- **C++ 原生库** —— `libadapter.so` 提供核心系统级 API 对接\n- **ArkTS 适配层** —— 约 50 个适配器，将 HarmonyOS API 包装为 Electron 兼容接口\n- **HarmonyOS 底层** —— 系统原生能力：Ability 组件、ArkUI 界面、华为账号、云存储等\n\n---\n\n## 功能特性\n\n### Obsidian 核心体验\n\n- 完整的 Obsidian 1.12.7 笔记编辑与管理功能\n- 所有社区插件和主题的完整兼容\n- 本地 Vault（知识库）的创建、管理与浏览\n- Markdown 实时预览与编辑\n- 图谱视图、反向链接等高级特性\n\n### 多窗口支持\n\n- 主窗口、子窗口、嵌入窗口、浮动窗口\n- 窗口位置与大小持久化记忆\n- 独立渲染进程隔离（通过 `ChildProcess`）\n- 状态栏扩展窗口\n\n### 华为生态集成\n\n- **华为账号一键登录** —— 通过 Account Kit 的 `LoginWithHuaweiIDButton` 实现无感认证\n- **华为云同步** —— 基于 Cloud Foundation Kit 实现 Vault 的云端备份与多端同步\n- **状态栏扩展** —— 通过 `StatusBarViewExtensionAbility` 常驻系统状态栏\n\n### 系统级原生适配\n\n| 类别 | 适配内容 |\n|------|---------|\n| 文件系统 | 文件管理器、文件选择器、原生对话框、回收站兼容层 |\n| 输入 | IME 输入法框架、拖拽放置、多点触控 |\n| 显示 | 多显示器管理、深色\u002F浅色主题跟随、自定义光标 |\n| 通知 | 系统通知推送、锁屏事件监听 |\n| 设备 | 电池状态、蓝牙（经典 + BLE）、电源管理、屏幕截图 |\n| 安全 | 证书管理、生物识别认证、剪贴板访问 |\n| 其他 | 打印服务、文字转语音、OCR 识别、地理定位、外部协议处理 |\n\n### 自动更新\n\n- 检测 `obsidian-{version}.asar` 更新包\n- RSA-SHA256 签名校验 + SHA256 哈希校验\n- 替换 asar 后热加载新版本\n\n---\n\n## 模块结构\n\n项目采用 HarmonyOS 标准双模块架构：\n\n### `web_engine`（HAR 静态库）\n\n核心引擎模块，提供所有 Electron 兼容功能和适配层。可被其他 HarmonyOS 应用复用。\n\n```typescript\n\u002F\u002F 公共导出（Index.ets）\nexport { WebAbilityStage } from '.\u002Fsrc\u002Fmain\u002Fets\u002Fapplication\u002FAbilityStage'\nexport { WebAbility } from '.\u002Fsrc\u002Fmain\u002Fets\u002Fability\u002FWebAbility'\nexport { WebEmbeddedAbility } from '.\u002Fsrc\u002Fmain\u002Fets\u002Fability\u002FWebEmbeddedAbility'\nexport { WebWindow, WebSubWindow, WebEmbeddedWindow, WebWindowNode } from '.\u002Fsrc\u002Fmain\u002Fets\u002Fcomponents\u002F...'\nexport { WebChildProcess } from '.\u002Fsrc\u002Fmain\u002Fets\u002Fprocess\u002FWebChildProcess'\n```\n\n**依赖注入** —— 使用 InversifyJS 管理约 50 个适配器的单例注册：\n\n```\nCommonModule  → AbilityManager, DragParamManager, SystemFloatingWindowManager\nAdapterModule → ContextAdapter, DragDropAdapter, MultiInputAdapter,\n                NativeThemeAdapter, PermissionManagerAdapter, DialogAdapter,\n                TrashAdapter, CloudSyncAdapter ...\n```\n\n### `electron`（HAP 入口包）\n\n可执行的应用模块，包含所有 UI 页面和应用逻辑。\n\n**Ability 组件：**\n\n| Ability | 页面 | 用途 |\n|---------|------|------|\n| `EntryAbility` | Index.ets | 主入口，初始化 AGC |\n| `BrowserAbility` | WindowNode.ets | 浏览器进程窗口 |\n| `StatelessAbility` | Index.ets | 无状态窗口 |\n| `BrowserEmbeddedAbility` | EmbeddedWindow.ets | 嵌入 UI |\n| `StatusBarEntryAbility` | StatusBarPage.ets | 状态栏扩展 |\n\n**UI 页面：**\n\n| 页面 | 说明 |\n|------|------|\n| `Index.ets` | 主界面，承载 `WebWindow` 组件 |\n| `WindowNode.ets` | 浏览器窗口节点 |\n| `SubWindow.ets` | 子窗口（弹窗、设置等） |\n| `EmbeddedWindow.ets` | 嵌入式窗口 |\n| `Login.ets` | 华为账号登录页 |\n| `StatusBarPage.ets` | 状态栏页面 |\n| `WebPage.ets` | 隐私协议等 WebView 页面 |\n\n---\n\n## 适配层\n\n适配层是 OHsidian 最重要的基础设施 —— 它将 HarmonyOS 原生 API 包装为 Electron 兼容的调用接口，使 Obsidian 在毫无感知的情况下运行在 HarmonyOS 上。\n\n### 适配器清单\n\n每个适配器都继承自 `BaseAdapter`，通过 InversifyJS 注册为单例，并配有对应的 JSBind 绑定类：\n\n```\nweb_engine\u002Fsrc\u002Fmain\u002Fets\u002Fadapter\u002F\n├── Accessibility.ets           # 无障碍功能\n├── AppLifecycle.ets            # 应用生命周期\n├── AppWindow.ets               # 应用窗口操作\n├── Battery.ets                 # 电池状态\n├── Bluetooth.ets               # 蓝牙经典\n├── BluetoothLowEnergy.ets      # 低功耗蓝牙\n├── BrowserPolicy.ets           # 浏览器安全策略\n├── CertManager.ets             # 证书管理\n├── CloudSync.ets               # 华为云同步 ⭐\n├── Context.ets                 # 应用上下文\n├── ContextPath.ets             # 文件路径解析\n├── Cursor.ets                  # 自定义光标\n├── Device.ets                  # 设备信息\n├── DeviceInfo.ets              # 硬件信息\n├── DeviceUserAuth.ets          # 生物识别\n├── Dialog.ets                  # 原生对话框\n├── Display.ets                 # 显示器管理\n├── DragDrop.ets                # 拖拽放置\n├── ElectronApp.ets             # Electron App API\n├── ExternalProtocol.ets        # 外部协议处理\n├── FileManager.ets             # 文件管理\n├── FilePicker.ets              # 文件选择器\n├── Font.ets                    # 系统字体枚举\n├── Geolocation.ets             # 地理位置\n├── I18n.ets                    # 国际化\n├── IMF.ets                     # 输入法框架\n├── Media.ets                   # 媒体播放\n├── MimeType.ets                # MIME 类型\n├── MultiInput.ets              # 多窗口输入\n├── NativeTheme.ets             # 系统主题\n├── NetConnection.ets           # 网络连接\n├── Notification.ets            # 系统通知\n├── Ocr.ets                     # OCR 识别\n├── PasteBoard.ets              # 剪贴板\n├── PermissionManager.ets       # 权限管理\n├── PopupWindow.ets             # 弹出窗口\n├── PowerMonitor.ets            # 电源监听\n├── Print.ets                   # 打印服务\n├── Process.ets                 # 进程管理\n├── RunningLock.ets             # 唤醒锁\n├── ScreenlockMonitor.ets       # 锁屏监听\n├── Screenshot.ets              # 屏幕截图\n├── ShapeDetection.ets          # 形状检测\n├── Speech.ets                  # 文字转语音\n├── StatusBar.ets               # 状态栏控制\n├── SubWindow.ets               # 子窗口管理\n├── SystemFloatingWindow.ets    # 系统悬浮窗\n└── Trash.ets                   # 回收站操作\n```\n\n### JSBind 绑定机制\n\n每个适配器配有一个 Bind 类，将方法注册到 JS 运行时：\n\n```typescript\n\u002F\u002F 示例：CloudSync 适配器的 JSBind 注册\nJsBindingUtils.bindFunction(\"CloudSync.uploadFile\", cloudSyncAdapter.uploadFile)\nJsBindingUtils.bindFunction(\"CloudSync.downloadFile\", cloudSyncAdapter.downloadFile)\nJsBindingUtils.bindFunction(\"CloudSync.listCloudFiles\", cloudSyncAdapter.listCloudFiles)\n\u002F\u002F ...\n```\n\n所有绑定在应用启动时通过 `JsBindingMethod.ets` 统一激活。\n\n---\n\n## 华为云同步\n\nOHsidian 实现了基于华为 Cloud Foundation Kit 的 Vault 云同步功能。\n\n### 同步架构\n\n```\n┌──────────────┐     ┌──────────────────┐     ┌─────────────────────┐\n│   Obsidian   │────▶│  CloudSyncAdapter │────▶│  CloudFoundation Kit │\n│   写入触发    │     │  (ArkTS 适配层)    │     │  (华为云存储)         │\n└──────────────┘     └──────────────────┘     └─────────────────────┘\n                                                   │\n                                             ┌─────▼──────────┐\n                                             │  Bucket:        │\n                                             │  ohsidian-vault │\n                                             │  -sync-75ued    │\n                                             └────────────────┘\n```\n\n### 存储结构\n\n```\n{userId}\u002F\n  └── vaults\u002F\n      └── {vaultName}\u002F\n          ├── file1.md\n          ├── attachments\u002F\n          │   └── image.png\n          └── ...\n```\n\n### 同步操作\n\n| 操作 | 说明 |\n|------|------|\n| `uploadFile` | 上传本地文件到云端 |\n| `downloadFile` | 从云端下载文件 |\n| `listCloudFiles` | 列出云端文件列表 |\n| `deleteCloudFile` | 删除云端文件 |\n| `getSyncStatus` | 获取同步状态 |\n\n### 登录流程\n\n1. Obsidian 侧写入 `.hcs-login-pending` 标记文件\n2. HarmonyOS 侧通过 3 秒轮询检测该标记\n3. 弹出 `hcs-login` 对话框，显示华为账号一键登录按钮\n4. 用户授权后，userId 写入 `hcs-user.json` 供 Obsidian 侧读取\n5. 后续同步操作基于该 userId 构建云端路径\n\n---\n\n## 构建与运行\n\n### 环境要求\n\n| 工具 | 版本要求 |\n|------|---------|\n| DevEco Studio | 5.0.0+ |\n| HarmonyOS SDK | API 22 (6.0.2) |\n| Node.js | 18.x+ |\n| Hvigor | 5.0.0+ |\n\n### 构建步骤\n\n```bash\n# 1. 克隆仓库\ngit clone https:\u002F\u002Fgithub.com\u002Fyour-username\u002Fohsidian.git\ncd ohsidian\n\n# 2. 安装依赖（在 DevEco Studio 中自动完成）\n#    或手动:\nhvigorw install\n\n# 3. 构建 HAP\nhvigorw assembleHap\n\n# 4. 产物位于\n# build\u002Foutputs\u002Fdefault\u002Felectron-default-signed.hap\n```\n\n或者直接在 DevEco Studio 中打开项目，点击 **Build > Build HAP(s)**。\n\n### 签名配置\n\n在 `build-profile.json5` 中配置签名信息：\n\n```json5\n{\n  \"app\": {\n    \"signingConfigs\": [\n      {\n        \"name\": \"default\",\n        \"type\": \"HarmonyOS\",\n        \"material\": {\n          \"certpath\": \"~\u002F.ohos\u002Fconfig\u002Fyour_cert.cer\",\n          \"storePassword\": \"******\",\n          \"keyAlias\": \"debugKey\",\n          \"keyPassword\": \"******\",\n          \"profile\": \"~\u002F.ohos\u002Fconfig\u002Fyour_profile.p7b\",\n          \"signAlg\": \"SHA256withECDSA\"\n        }\n      }\n    ]\n  }\n}\n```\n\n### 华为 AGC 配置\n\n1. 在 [AppGallery Connect](https:\u002F\u002Fdeveloper.huawei.com\u002Fconsumer\u002Fcn\u002Fservice\u002Fjosp\u002Fagc\u002F) 创建应用\n2. 下载 `agconnect-services.json`\n3. 放置到 `electron\u002Fsrc\u002Fmain\u002Fresources\u002Frawfile\u002Fagconnect-services.json`\n4. 开启 Account Kit 和 Cloud Storage 服务\n\n---\n\n## 项目结构\n\n```\nobsidian\u002F\n├── AppScope\u002F                         # 全局应用配置\n│   ├── app.json5                     # bundleName、版本、多实例模式\n│   └── resources\u002Fbase\u002F\n│       ├── element\u002Fstring.json       # 应用名称 \"OHsidian\"\n│       ├── media\u002F                    # 应用图标（startIcon、trayIcon）\n│       └── profile\u002F                  # 字体缩放配置\n│\n├── web_engine\u002F                       # HAR 静态库（核心引擎）\n│   ├── Index.ets                     # 公共 API 导出\n│   ├── childProcess.ets              # 子进程导出\n│   ├── oh-package.json5              # 依赖：inversify、reflect-metadata\n│   ├── hvigorfile.ts                 # harTasks 构建\n│   └── src\u002Fmain\u002F\n│       ├── ets\u002F\n│       │   ├── ability\u002F              # WebAbility、WebEmbeddedAbility 基类\n│       │   ├── adapter\u002F              # ~50 个系统适配器\n│       │   ├── application\u002F          # AbilityStage\n│       │   ├── common\u002F               # DI 容器、常量、管理器\n│       │   ├── components\u002F           # WebWindow、WebSubWindow 等 UI 组件\n│       │   ├── interface\u002F            # TypeScript 接口定义\n│       │   ├── jsbindings\u002F           # JSBind 绑定注册\n│       │   ├── process\u002F              # ChildProcess 管理\n│       │   └── utils\u002F                # 日志、工具函数\n│       ├── cpp\u002Ftypes\u002Flibadapter\u002F     # C++ 原生库类型声明\n│       └── resources\u002Fresfile\u002Fresources\u002Fapp\u002F\n│           ├── main.js               # Electron 启动入口\n│           ├── package.json           # Obsidian 1.12.7 包装配置\n│           └── obsidian.asar          # Obsidian 应用包\n│\n├── electron\u002F                         # HAP 入口模块\n│   ├── oh-package.json5              # 依赖：web_engine、AGC hmcore\n│   ├── hvigorfile.ts                 # hapTasks 构建\n│   └── src\u002Fmain\u002F\n│       ├── module.json5              # 模块清单（Ability、页面、权限）\n│       ├── ets\u002F\n│       │   ├── Application\u002F          # MyAbilityStage\n│       │   ├── entryability\u002F         # Entry、Browser、Stateless Ability\n│       │   ├── extensionAbility\u002F     # EmbeddedAbility、StatusBar\n│       │   ├── pages\u002F                # UI 页面\n│       │   └── process\u002F              # CustomChildProcess\n│       ├── resources\u002F\n│       │   ├── base\u002Felement\u002F         # 字符串资源\n│       │   ├── base\u002Fprofile\u002F         # main_pages 路由配置\n│       │   ├── rawfile\u002F              # agconnect-services.json\n│       │   └── zh_CN|en_US\u002Felement\u002F  # 国际化字符串\n│       └── ohosTest\u002F                 # 单元测试\n│\n├── hvigor\u002F                           # Hvigor 构建配置\n├── hvigorfile.ts                     # 根构建文件（appTasks）\n├── build-profile.json5               # 构建配置（签名、SDK、模块）\n├── oh-package.json5                  # 根包配置\n└── oh-package-lock.json5             # 依赖锁定文件\n```\n\n---\n\n## 依赖说明\n\n### 运行时依赖\n\n| 依赖 | 版本 | 说明 |\n|------|------|------|\n| `inversify` | ^6.0.1 | IoC 容器，管理适配器依赖注入 |\n| `reflect-metadata` | ^0.1.13 | TypeScript 装饰器元数据 |\n| `@electron\u002Fremote` | ^2.1.3 | Electron remote 模块兼容 |\n| `@hw-agconnect\u002Fhmcore` | ^1.0.1 | 华为 AGC 核心服务 |\n| `libadapter.so` | — | C++ 原生适配库（本地引用） |\n| `btime` | — | 文件时间处理 |\n| `get-fonts` | — | 系统字体枚举 |\n\n### 开发依赖\n\n| 依赖 | 版本 | 说明 |\n|------|------|------|\n| `@ohos\u002Fhypium` | ^1.0.6 | HarmonyOS 测试框架 |\n| `@ohos\u002Fhvigor-ohos-plugin` | — | Hvigor 构建插件 |\n\n---\n\n## 许可协议\n\n本项目基于 **BSD 3-Clause License** 开源。\n\n```\nCopyright (c) 2023-2025, Haitai FangYuan Co., Ltd.\nAll rights reserved.\n```\n\n### 第三方许可\n\n- **Obsidian** 是其各自所有者的商标，本项目为己编译的 `obsidian.asar` 提供 HarmonyOS 兼容运行环境\n- **Electron** 及 `@electron\u002Fremote` 遵循 MIT License\n- **InversifyJS** 遵循 MIT License\n- **Huawei SDK** 各组件遵循华为开发者协议\n\n---\n\n## 致谢\n\n本项目站在以下巨人的肩膀上：\n\n- [Obsidian](https:\u002F\u002Fobsidian.md) — 改变知识管理方式的笔记应用\n- [Electron](https:\u002F\u002Fwww.electronjs.org) — 跨平台桌面应用框架\n- [HarmonyOS](https:\u002F\u002Fdeveloper.huawei.com\u002Fconsumer\u002Fcn\u002Fharmonyos\u002F) — 全场景分布式操作系统\n- [InversifyJS](https:\u002F\u002Finversify.io) — 强大的 TypeScript IoC 容器\n\n---\n\n\u003Cp align=\"center\">\n  \u003Csub>OHsidian 是一个社区项目，与 Obsidian 官方无关。\u003C\u002Fsub>\n\u003C\u002Fp>\n",2,"2026-06-11 04:10:51","CREATED_QUERY"]