Harmony-ONLYOFFICE:基于 ONLYOFFICE 的鸿蒙文档编辑器内核移植项目

ONLYOFFICE Desktop Editors 向 HarmonyOS(OHOS arm64)的移植源码仓库:收录上游 ONLYOFFICE Desktop Editors 源码树与本平台适配改动,许可证以仓库内收录的上游许可文本为准

分支1Tags0

Harmony-ONLYOFFICE

下载与交流

  • 华为应用市场:AirOffice
  • 交流群:1105698553

ONLYOFFICE Desktop Editors 原生内核向 HarmonyOS(OHOS arm64) 的移植 —— x2t 文档转换器与编辑器内核交叉构建为一组 .so。

移植方式

  • 交叉编译:宿主机 qmake(Qt 6,仅作为 Makefile 生成器,工程本身 QT -= core gui)+ 自定义 spec mkspecs/linux-ohos-clang + OHOS NDK clang(--sysroot、-D__MUSL__、libc++、lld)。
  • 构建产物:core/build/lib/linux_arm64/ 下 30 个左右模块库,x2t 以 libx2t.so + 运行时 dlopen 按需加载的方式工作(清单见 scripts/build_core_all.sh 与 scripts/deploy_converter.sh)。
  • 关键适配:
    • doctrenderer 以 stub 方式移植(DesktopEditor/doctrenderer/stub/),native 层不依赖 V8;编辑器 UI 由 Web 层(sdkjs / web-apps)承载。
    • DEFINES+=NOT_USE_PTHREAD_CANCEL(musl 无该取消语义)、CONFIG+=no_heif。
    • harfbuzz src/hb-ft.cc 打了符号字体 charmap 回退补丁(见 scripts/patches/harfbuzz-8.3.0-ohos.patch)。
    • 中文字体别名映射(宋体/微软雅黑 → HarmonyOS Sans SC 等)由 scripts/gen_allfonts.py 生成 AllFonts.js。

仓库结构

目录 说明
desktopeditors-src/ 上游 DesktopEditors 超级项目快照(core / desktop-sdk / sdkjs / web-apps),叠加各模块 OHOS 移植改动(Makefile.ohos 等)
scripts/ OHOS 交叉编译、部署与字体脚本(从工程 native 层整理而来,路径已可迁移)
mkspecs/linux-ohos-clang/ qmake 交叉编译 spec(工具链取自 ohos_env.sh 导出的环境变量)
scripts/patches/ 相对上游第三方库的本地补丁

构建

前置条件:

  • OHOS SDK command-line-tools(默认路径 ~/Library/command-line-tools/sdk/default/openharmony/native,可由 OHOS_NDK 覆盖)
  • 宿主机 Qt 6(brew install qt,qmake 位于 /opt/homebrew/opt/qt/bin/qmake)、make、python3

步骤:

# 1. 交叉编译全部 core 模块(约 30 个 .pro,逐个 qmake -> Makefile.ohos -> make)
scripts/build_core_all.sh
#    产物: desktopeditors-src/core/build/lib/linux_arm64/*.so

# 2. 部署转换器 .so 集合 + icudt74l.dat + 空文档模板到 HAP 目录
#    (期望本仓库位于 App 工程内,与 entry 模块同级;独立检出时按需手改)
scripts/deploy_converter.sh

# 3. 生成 AllFonts.js(参数:<字体目录> <输出路径>)
python3 scripts/gen_allfonts.py <rawfile/fonts> <sdkjs/common/AllFonts.js>

单独重编某个模块:scripts/build_core_one.sh <相对 core 的 .pro 路径> [额外 CONFIG+= ...]。 仓库内已提交的 Makefile.ohos 均为 qmake 生成物,其中可能残留原始构建机的绝对路径,重新生成即被覆盖。

如需重编 boost:scripts/build_boost_ohos.sh(源码树需自行放置,见下表)。

第三方依赖

组件 版本 / 上游提交 是否入库 位置 / 说明
boost 1.72.0(789155d) 头文件 + OHOS 静态库 core/Common/3dParty/boost/build/linux_arm64/;完整源码未入库(上游无改动),需重编时自行获取 boost_1_72_0
ICU release-74-2(2d02932) 头文件 + OHOS 静态库 core/Common/3dParty/icu/linux_arm64/build/;源码未入库(上游无改动)
harfbuzz 8.3.0(894a1f7) 完整源码 含 hb-ft.cc 本地补丁,独立补丁文件见 scripts/patches/
openssl 随 core 快照 完整源码 core/Common/3dParty/openssl/openssl-src/
brotli / cryptopp / katana / gumbo 等 随 core 快照 完整源码 以源码方式编入相应模块

仓库范围

  • 本仓库收录 ONLYOFFICE DesktopEditors 源码快照(core / desktop-sdk / sdkjs / web-apps)、各模块 HarmonyOS 交叉构建配置(Makefile.ohos)、构建与部署脚本(scripts/、mkspecs/);
  • boost 与 ICU 以面向 OHOS arm64 的头文件与静态库形式收录(见上表路径),对应完整源码树可按表内版本与提交号自上游官方渠道获取;
  • 构建产物、本地工具链与缓存目录不纳入版本库(见 .gitignore);
  • scripts/ 中脚本的路径定位基于仓库所在目录推导,便于在不同检出位置使用。

许可证

本项目继承 ONLYOFFICE 上游许可证 GNU AGPL v3(见 LICENSE)。上游组件:

harfbuzz(MIT)、ICU(ICU License)、boost(Boost License)、OpenSSL(Apache-2.0)等以各自许可证发布。

项目介绍

ONLYOFFICE Desktop Editors 向 HarmonyOS(OHOS arm64)的移植源码仓库:收录上游 ONLYOFFICE Desktop Editors 源码树与本平台适配改动,许可证以仓库内收录的上游许可文本为准

定制我的领域