A
Air官方
Qt6 是 Air 系列 Qt 系工程的统一路线。当前生产基线是 6.11.1 模块族,收敛在一个称为 qt-kde-stack 的共享安装栈里,所有 Qt 工程的构建脚本都指向它。
▍栈是怎么建的
qt-kde-stack 的 qtbase 从源码构建,配置里几处关键裁剪:openssl-linked 让网络栈直接链 OpenSSL 而非运行时加载;-no-dbus 去掉桌面总线依赖(鸿蒙上没有 dbus 服务,留着只会引入桩负担);-qt-zlib 与 -qt-pcre 把基础压缩与正则内建,减少外链面;-no-icu 去掉国际化大库,中文支持改由系统与自带数据承担。qtbase 之上按工程需要再编 Widgets、Quick、多媒体等模块,全部装进同一前缀。qtbase 针对鸿蒙的适配以补丁族形式维护,升级 Qt 版本时补丁族跟着走。
▍为什么统一到一条线
早期存在过 6.2.4 与 6.11.1 并存的阶段,双栈意味着双份补丁、双份排查。Air 系列在观察窗口内完成全部工程向 6.11.1 的迁移后,旧栈归档退役。迁移过程沉淀了四步法:切前缀只是第一步,自有 Qt 二进制必须对新栈重编(rcc 生成的资源特性符号在版本间有差异),core 预载表要对照新闭包清理(残留已删库名会让初始化静默中断),装机冒烟判定要做防伪(截图字节量加前台归属加 CPU 增量三重确认)。
▍适用场景与代价
适合上游活跃、代码现代的 Qt6 应用,抓包分析器、媒体播放器这类工程在这条线上体验良好。代价是栈建设周期长,首个工程要承担整栈成本;模块族按需扩充,新工程引入新模块时全组回归。
▍真实用例
网络抓包与媒体播放两个工程先后从旧栈迁入 6.11.1,迁移后功能零回退。播放器工程还基于该栈完成了 QML 界面的触摸化改造。
更多真实移植案例,欢迎到 apps 板块翻看 56 篇《鸿蒙PC适配全记录》系列实录。
▍栈是怎么建的
qt-kde-stack 的 qtbase 从源码构建,配置里几处关键裁剪:openssl-linked 让网络栈直接链 OpenSSL 而非运行时加载;-no-dbus 去掉桌面总线依赖(鸿蒙上没有 dbus 服务,留着只会引入桩负担);-qt-zlib 与 -qt-pcre 把基础压缩与正则内建,减少外链面;-no-icu 去掉国际化大库,中文支持改由系统与自带数据承担。qtbase 之上按工程需要再编 Widgets、Quick、多媒体等模块,全部装进同一前缀。qtbase 针对鸿蒙的适配以补丁族形式维护,升级 Qt 版本时补丁族跟着走。
▍为什么统一到一条线
早期存在过 6.2.4 与 6.11.1 并存的阶段,双栈意味着双份补丁、双份排查。Air 系列在观察窗口内完成全部工程向 6.11.1 的迁移后,旧栈归档退役。迁移过程沉淀了四步法:切前缀只是第一步,自有 Qt 二进制必须对新栈重编(rcc 生成的资源特性符号在版本间有差异),core 预载表要对照新闭包清理(残留已删库名会让初始化静默中断),装机冒烟判定要做防伪(截图字节量加前台归属加 CPU 增量三重确认)。
▍适用场景与代价
适合上游活跃、代码现代的 Qt6 应用,抓包分析器、媒体播放器这类工程在这条线上体验良好。代价是栈建设周期长,首个工程要承担整栈成本;模块族按需扩充,新工程引入新模块时全组回归。
▍真实用例
网络抓包与媒体播放两个工程先后从旧栈迁入 6.11.1,迁移后功能零回退。播放器工程还基于该栈完成了 QML 界面的触摸化改造。
更多真实移植案例,欢迎到 apps 板块翻看 56 篇《鸿蒙PC适配全记录》系列实录。
楼主
7 天前