随着OpenHarmony生态向PC端扩展,网络调试工具成为开发者日常工作中不可或缺的工具。NetTool作为一款基于Qt Widgets的开源网络调试助手,支持TCP客户端、TCP服务器、UDP服务器等多种网络通信功能,非常适合移植到HarmonyOS PC平台。本文将详细介绍如何将NetTool移植到HarmonyOS PC环境,为开发者提供一个功能完善的网络调试工具。

更多交流学习,欢迎加入开源鸿蒙PC社区https://harmonypc.csdn.net/

欢迎在PC社区平台申请新建项目https://atomgit.com/OpenHarmonyPCDeveloper

移植成功的项目源码开源地址https://atomgit.com/OpenHarmonyPCDeveloper/ohos_qt_nettool

NetTool在HarmonyOS PC端的优势

NetTool作为一款成熟的网络调试工具,其丰富的网络通信功能和直观的用户界面非常适合移植到HarmonyOS PC平台。

通过移植,NetTool将能够:

  1. 充分利用Qt Widgets:NetTool基于Qt Widgets模块,可以无缝适应HarmonyOS PC的桌面环境。
  2. 多种网络协议支持:支持TCP客户端、TCP服务器、UDP服务器等多种网络通信模式。
  3. 数据格式灵活:支持多种数据格式的发送和接收,满足不同调试需求。
  4. 跨平台一致性:保持与原版NetTool一致的用户界面和功能,减少学习成本。

在这里插入图片描述
通过移植,相信大家也能够理解如何基于Qt的Qt Widgets开发鸿蒙PC上的应用了。

至于界面和布局的开发还是用qtcreator这个IDE,跟之前的开发习惯一样,只是到最后多出来了一步使用devStudio打包环节。

移植成功的项目源码开源地址https://atomgit.com/OpenHarmonyPCDeveloper/ohos_qt_nettool

一、环境搭建与配置

关于开发环境搭建,参见博文
HarmonyOS鸿蒙PC的QT应用开发:(一、开发环境搭建及第一个HelloWorld)》

HarmonyOS鸿蒙PC的QT应用开发:(二、开发环境搭建及第一个HelloWorld)

前置条件

  1. 安装DevEco Studio 5.0及以上版本
  2. 参照环境搭建已准备好开发环境
  3. 了解HarmonyOS应用开发基础

二、下载与准备NetTool源码

  1. 下载NetTool源码:在这里 https://gitcode.com/qq8864/nettool-hmos的Doc文件夹中存了份源码。

  2. 解压源码:将下载的源码包解压到一个工作目录,例如 E:\test\qt\nettool
    在这里插入图片描述

三、在QtCreator中配置鸿蒙的构建套件并编译源码

在QtCreator的IDE中,需要先配置好ohos的构建套件(关键操作)。

注: 这里是区别传统x86下的QT的开发和鸿蒙pc版的qt开发的关键所在,就是构建套件不一样而已。

在 HarmonyOS 上运行 Qt 应用,跟传统的PC上的QT应用不同。

传统的PC上的QT应用是使用QtCreator开发完成后,直接编译为可执行文件exe.。 而鸿蒙版QT的开发流程,则是使用鸿蒙版QT的SDK和qmake工具链(鸿蒙qt的专属构建套件),最终的编译产物为.so动态链接库.。

鸿蒙版qt的专属构建套件安装,详细步骤参考博文

HarmonyOS鸿蒙PC的QT应用开发:(二、开发环境搭建及第一个HelloWorld)

在这里插入图片描述

在这里插入图片描述

这里生成的构建产物不是exe可执行文件,而是一个.so的动态库。之后,还需要鸿蒙的QT工程项目模版,把这里生成的so库加载进去,将应用编译打包为hap或app包。所以有了下面的步骤,创建HarmonyOS项目工程。

四、创建HarmonyOS项目工程

可以在以下地址获取最新的用于构建最终 OpenHarmony Qt 应用程序的 DevEco 项目模板,这将用于在 HarmonyOS 设备上运行 Qt 应用程序。

获取最新模版地址: http://codereview.qtcompany.cn:29416/template/

1.将 DevEco 项目模板放入已知位置

我们将其命名为 nettool-hmos
转到文件夹 nettool-hmos\entry 并创建一个文件夹 nettool-hmos\ entry\libs\arm64-v8a,前面步骤的so库的构建产物和依赖的Qt的 so库,需要放置在此目录下。

在这里插入图片描述

2. 修改APP_LIBRARY_NAME的名字

修改nettool_ohos\entry\src\main\ets\commonQtAppConstants.ets文件中的APP_LIBRARY_NAME为nettool.so

在这里插入图片描述

点击"Sync Now"同步工程。

3 拷贝QT依赖库文件

拷贝库文件:将环境准备篇介绍的编译好的Qt SDK下的相关QT库依赖文件,拷贝到项目的entry/libs/arm64-v8a目录下。

我的编译好的Qt SDK路径如下:

在这里插入图片描述

五、构建与运行

1. 命令行构建

# 清理构建
hvigorw clean

# 构建项目
hvigorw assembleHap

# 安装到设备
hdc install entry/build/default/outputs/default/entry-default-signed.hap

2. DevEco Studio构建

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

在这里插入图片描述

3. 运行应用

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

  1. 真实PC设备

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

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

六、功能特性说明

NetTool移植到HarmonyOS PC平台后,完整具备以下核心功能:

1. TCP客户端

  • 支持连接到远程TCP服务器
  • 支持发送和接收文本数据
  • 实时显示连接状态

2. TCP服务器

  • 支持创建TCP服务器,监听指定端口
  • 支持多客户端连接管理
  • 支持向指定客户端发送数据

3. UDP服务器

  • 支持UDP数据的接收和发送
  • 支持指定目标IP和端口发送数据
  • 实时显示接收到的UDP数据

4. 数据管理

  • 支持自定义发送数据
  • 支持保存发送历史
  • 支持多种数据格式显示(文本、十六进制)

5. 用户界面

  • 基于Qt Widgets设计,操作简单直观
  • 标签页式布局,功能模块清晰
  • 支持中英文界面切换

七、调试与问题解决(FAQ)

1. 常见问题解决

  1. 网络权限问题:在module.json5中申请网络权限:

    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]
    
  2. 库文件缺失:确保所有Qt库文件已正确拷贝到libs目录

  3. 架构不匹配:确认设备架构与abiFilters配置一致

运行效果截图

在这里插入图片描述

当前存在的问题:虽然功能正常,但界面有些失真,尤其是字体和按钮大小,当前显示的字体明显偏小,跟最前面截图的效果差异明显。这个猜测属于屏幕分辨率的问题需要自行适配,非移植的问题。

2.显示问题解决

从上面的真机运行效果上看,界面明显受显示分辨率的影响,被缩放了。显示效果严重失真。这里分享个小妙招,只需稍微改动下源码,在main函数前增加几行代码解决:

#include <QApplication>

int main(int argc, char *argv[])
{
    //自适应高分辨率(DPI),解决界面受分辨率影响导致失真问题
   QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true);
   QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true);
   //QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); //这个QT5.14及之后才支持(设置舍入策略(防止 150% 变成 200%))
    QApplication a(argc, argv);
   return a.exec();
    }

增加这个之后真机运行效果:

在这里插入图片描述

八、未来展望

NetTool在HarmonyOS PC平台的应用开发具有重要价值:

  1. 开发者工具生态:丰富HarmonyOS PC平台的开发者工具,提高开发效率
  2. 网络调试标准化:为HarmonyOS应用开发提供标准的网络调试工具
  3. 跨设备调试:结合HarmonyOS分布式能力,实现跨设备网络调试
  4. 生态建设:推动HarmonyOS PC应用生态的快速成熟

随着HarmonyOS PC生态的完善,NetTool将成为开发者网络调试的重要工具,为HarmonyOS应用开发提供有力支持。

欢迎加入开源鸿蒙开发者社区交流:https://harmonypc.csdn.net/

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐