news 2026/4/29 20:35:36

移植开源软件Notepad--(NDD)到鸿蒙PC:环境搭建与配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
移植开源软件Notepad--(NDD)到鸿蒙PC:环境搭建与配置

背景与概述

Notepad-- 是一个功能强大的开源文本编辑器,支持多种编程语言的语法高亮、插件扩展等功能。随着OpenHarmony生态向PC端扩展,将Notepad–移植到OpenHarmony PC环境上,不仅能够丰富鸿蒙生态的应用种类,还能为开发者提供一个实用的桌面级文本编辑工具。本文将详细介绍如何在OpenHarmony PC环境下移植Notepad–。

Notepad–(NDD)的开源地址:
https://gitcode.com/GitHub_Trending/no/notepad–

请注意:本文使用的Qt for OpenHarmony SDK由OpenHarmony SIG社区基于Qt 5.15独立开发和维护,非Qt官方版本。

  • 社区项目地址:https://gitcode.com/openharmony-sig/qt
  • SDK下载链接:https://gitcode.com/openharmony-sig/qt/releases

Notepad–在OpenHarmony PC端的优势

Notepad–作为一款成熟的开源文本编辑器,其丰富的功能和强大的可扩展性非常适合移植到OpenHarmony PC平台。通过移植,Notepad–将能够:

  1. 充分利用Qt Widgets:Notepad–主要基于Qt Widgets模块,可以无缝适应OpenHarmony PC的桌面环境。
  2. 语法高亮和插件支持:支持多种编程语言的语法高亮和动态插件加载,提高开发效率。
  3. 跨平台一致性:保持与原版Notepad–一致的用户界面和功能,减少学习成本。

环境搭建与配置

文档适用范围

  • OpenHarmony API 15 (5.0.3) 及以上版本
  • Qt for OpenHarmony (基于 Qt 5.15)
  • DevEco Studio 5.0.5 及以上版本

前置条件

  1. 安装DevEco Studio 5.0.5及以上版本
  2. 下载并配置Qt for OpenHarmony SDK
  3. 了解OpenHarmony应用开发基础

1. DevEco Studio下载与安装

  • 官方下载地址:DevEco Studio官网
  • 注意事项
    • 推荐使用最新稳定版本以获得最佳兼容性。
    • 历史版本可能不支持最新的OpenHarmony API,可通过官网指定页面获取。
    • 具体安装步骤请参考鸿蒙官方安装教程。

2. Qt SDK下载与配置

本文假设您已完成基础环境搭建,包括:

  • 安装DevEco Studio 5.0.5及以上版本
  • 下载并配置Qt for OpenHarmony SDK
  • 了解OpenHarmony应用开发基础

如未完成,请参考前文《QT开发鸿蒙移动应用:环境搭建及第一个HelloWorld程序》中的环境搭建部分。

下载与准备Notepad–源码

  1. 下载Notepad–源码:从Notepad–的官方仓库下载源码。

    • GitCode地址: Notepad-- GitCode
  2. 解压源码:将下载的源码包解压到一个工作目录,例如~/Projects/notepadqq

创建OpenHarmony工程

1. 新建OpenHarmony工程

  1. 打开DevEco Studio,选择"Create Project"。
  2. 选择"Native C++"模板。
  3. 配置工程信息:
    • Project Name:NotePad--
    • Bundle Name:com.example.notepadqq
    • SaveLocation: 工程保存路径(如~/Projects/notepadqq
    • Compile SDK: 选择API 17或更高版本
    • Model: 选择"Stage"
    • Device Type: 选择"Tablet"或“2in1”

2. 修改为OpenHarmony工程

修改工程级build-profile.json5文件:

"products":[{"name":"default","signingConfig":"default","compileSdkVersion":17,"targetSdkVersion":17,"compatibleSdkVersion":17,// ... 其他配置}]

点击"Sync Now"同步工程。

3. 工程配置调整

3.1 修改Native编译配置

在模块级build-profile.json5中配置Qt SDK路径和架构:

"externalNativeOptions":{"path":"./src/main/cpp/CMakeLists.txt","arguments":"-DQT_PREFIX=/path/to/your/QtForOpenHarmony","abiFilters":["arm64-v8a"]// PC设备通常使用64位ARM或x86架构}

注意:根据实际PC设备架构调整abiFilters,可能为["arm64-v8a"]["x86_64"]

3.2 拷贝依赖文件
  1. 拷贝ets文件:将Qt SDK下的openharmony/qtbase目录内容复制到src/main/ets目录。
  2. 拷贝库文件:将Qt SDK下的plugins/platforms/libplugins_platforms_qopenharmony.so拷贝到libs/arm64-v8a目录下。
  3. 拷贝开源项目代码:将notepadd–的开源代码放置在如下目录中。
3.3 配置UIAbility

module.json5中配置PC应用入口:

{"module":{"name":"entry","type":"entry","srcEntry":"./ets/abilitystage/MyAbilityStage.ets",// 关键配置// ..."abilities":[{"name":"EntryAbility","launchType":"specified",// 关键配置// ... 其他配置}]}}

修改和配置CMakeLists.txt

1. 修改CMakeLists.txt文件

将how_build目录下的目录下CMakeLists.txt文件拷贝出来,文件内容如下,针对鸿蒙PC的编译做些修改:

cmake_minimum_required(VERSION 3.16) project(Notepad-- VERSION 1.22.0) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) list(APPEND CMAKE_FIND_ROOT_PATH ${QT_PREFIX}) find_package(QT NAMES Qt5 Qt6 REQUIRED COMPONENTS Core Widgets) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport XmlPatterns) # qscint 关键依赖库 add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint) # 插件库包含 # helloworld 动态插件库 add_subdirectory(${PROJECT_SOURCE_DIR}/src/plugin/helloworld) # win下需要开启UNICODE进行支持TCHAR if(CMAKE_HOST_WIN32) add_definitions(-D_UNICODE -DUNICODE) endif() if(${PLUGIN_EN}) if(${PLUGIN_EN} STREQUAL on) add_definitions(-DNO_PLUGIN=1) endif(${PLUGIN_EN}) endif() file(GLOB UI_SRC ${PROJECT_SOURCE_DIR}/src/*.ui) set(UI_SRC ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/cceditor/ccnotepad.ui) aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC) aux_source_directory(${PROJECT_SOURCE_DIR}/src/cceditor SRC) if(CMAKE_HOST_WIN32) add_executable(${PROJECT_NAME} WIN32 ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc) else() add_library(${PROJECT_NAME} SHARED ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc) endif() target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/src/cceditor ${PROJECT_SOURCE_DIR}/src/qscint/src ${PROJECT_SOURCE_DIR}/src/qscint/src/Qsci ${PROJECT_SOURCE_DIR}/src/qscint/scintilla/src ${PROJECT_SOURCE_DIR}/src/qscint/scintilla/include ${PROJECT_SOURCE_DIR}/src/qscint/scintilla/lexlib ${PROJECT_SOURCE_DIR}/src/qscint/scintilla/boostregex ) target_link_libraries(${PROJECT_NAME} PRIVATE qscint Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Concurrent Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::PrintSupport Qt${QT_VERSION_MAJOR}::XmlPatterns # 链接鸿蒙平台插件 ${QT_PREFIX}/plugins/platforms/libplugins_platforms_qopenharmony.so ) if(CMAKE_HOST_UNIX) install( TARGETS ${PROJECT_NAME} DESTINATION "bin" ) install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/linux/usr DESTINATION "/") include(${PROJECT_SOURCE_DIR}/cmake/deb_package_config.cmake) include(CPack) elseif(CMAKE_HOST_WIN32) install(TARGETS ${PROJECT_NAME} DESTINATION "/") install(DIRECTORY ${PROJECT_SOURCE_DIR}/build/bin/ DESTINATION "/") # 设置软件版本 set(CPACK_PACKAGE_NAME "NotePad--") set(CPACK_PACKAGE_DESCRIPTION "NotePad--") set(CPACK_PACKAGE_COPYRIGHT "Copyright (c) 2023") set(CPACK_PACKAGE_VERSION "1.22.0") set(CPACK_PACKAGE_VERSION_MAJOR "1") set(CPACK_PACKAGE_VERSION_MINOR "22") set(CPACK_PACKAGE_VERSION_PATCH "0") include(${PROJECT_SOURCE_DIR}/cmake/nsis_package_config.cmake) include(CPack) endif()

2. 配置依赖库

确保所有依赖库已正确添加到项目中,特别是qscinthelloworld插件库。这些库可以通过add_subdirectory指令集成到项目中。

3. 定义平台特定配置

根据不同的开发平台(Windows 和 Mac),定义相应的编译选项和资源文件。例如,在Windows平台上开启UNICODE支持,在Unix平台上指定安装路径。

构建与运行

1. 构建应用

  1. 在DevEco Studio中,点击"Build" → “Build HAP(s)”
  2. 等待构建完成,确保无编译错误

2. 运行应用

由于目前鸿蒙PC模拟器可能尚未普及,建议在真实PC设备上运行。

  1. 真实PC设备

    1. 准备已刷入OpenHarmony PC版的设备
    2. 通过USB连接设备
    3. 在DevEco Studio中选择目标设备
    4. 点击运行按钮,应用将自动安装并启动
  2. 远程调试

    1. 配置PC设备的远程调试选项
    2. 在DevEco Studio中配置远程连接
    3. 部署并运行应用

3. 应用效果

应用启动后,将显示一个标准的桌面窗口,包含:

  • 标题栏(可最小化/最大化/关闭)
  • 中央内容区域(文本编辑框)
  • 底部状态栏
  • 完整的菜单栏、工具栏(可根据需要添加)

1. 常见问题解决

  1. 库文件缺失:确保所有依赖库已正确拷贝到libs目录
  2. 架构不匹配:确认设备架构与abiFilters配置一致
  3. 权限问题:在module.json5中申请必要的PC应用权限

2. 性能优化建议

  1. 懒加载控件:大型应用可考虑动态加载UI组件
  2. 资源管理:合理管理图片、字体等资源
  3. 事件处理:优化耗时操作,避免阻塞UI线程

未来展望

Notepad–在OpenHarmony PC平台的应用开发具有重要价值:

  1. 企业级应用迁移:大量现有Qt桌面应用可平滑迁移至OpenHarmony PC
  2. 生产力工具开发:利用Qt Widgets丰富控件库开发办公、设计等专业软件
  3. 混合开发模式:结合Qt Quick和Qt Widgets,兼顾传统界面与现代UI需求
  4. 生态建设:推动OpenHarmony PC应用生态的快速成熟

随着OpenHarmony PC生态的完善,Notepad–将成为连接传统桌面应用与新一代操作系统的重要桥梁,为开发者提供高效、可靠的PC应用开发解决方案。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 22:34:06

加班到凌晨的汽车软件工程师,都该懂autosar

开车时调个座椅加热、切换自动泊车模式,背后其实是无数个汽车电子部件在”悄悄沟通”。你可能没发现,十年前不同品牌的汽车,电子系统就像”鸡同鸭讲”——大众的座椅控制模块和宝马的空调系统,底层逻辑完全不兼容;哪怕…

作者头像 李华
网站建设 2026/4/26 9:53:46

GPU算力变现新思路:基于TensorRT镜像的高性能服务搭建

GPU算力变现新思路:基于TensorRT镜像的高性能服务搭建 在AI模型越来越“重”的今天,一个训练好的大模型摆在面前,真正考验它的不是准确率,而是——它能不能跑得快、撑得住、回本快。 这正是当前许多团队面临的现实困境&#xff1a…

作者头像 李华
网站建设 2026/4/18 19:05:07

SpringBoot+Vue 社区待就业人员信息管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

摘要 随着社会经济的快速发展,就业问题成为当前社会关注的重点之一,尤其是待就业人员的就业帮扶和信息管理显得尤为重要。传统的就业信息管理方式效率低下,信息更新不及时,无法满足现代社会对就业服务的需求。为了解决这一问题&am…

作者头像 李华
网站建设 2026/4/24 2:47:57

驱动开发环境搭建:WinDbg Preview下载深度剖析

驱动开发调试利器:从零搭建 WinDbg Preview 调试环境你有没有遇到过这样的场景?辛辛苦苦写完一个内核驱动,部署到测试机上一加载,屏幕“啪”一下蓝了——熟悉的Blue Screen of Death (BSOD)闪亮登场。而你手头只有错误代码0x00000…

作者头像 李华
网站建设 2026/4/21 15:38:02

为什么顶尖团队都在用TensorRT做模型推理优化?

为什么顶尖团队都在用TensorRT做模型推理优化? 在AI系统真正落地的战场上,训练只是起点,推理才是决定用户体验和商业成本的关键一役。你有没有遇到过这样的场景:一个在实验室里准确率高达98%的图像分类模型,部署上线后…

作者头像 李华
网站建设 2026/4/26 16:25:52

NVIDIA官方TensorRT镜像深度解析:打造极致GPU推理性能

NVIDIA官方TensorRT镜像深度解析:打造极致GPU推理性能 在AI模型从实验室走向真实世界的最后一公里,性能瓶颈常常不在于算法本身,而在于如何让这些庞大的神经网络在有限的硬件资源下飞速运行。想象一下,一个图像识别服务在高并发请…

作者头像 李华