A
Air官方
GTK3 是当前 Linux 桌面存量大软件最集中的技术栈,图像处理、照片 RAW 冲图等一批重量级应用都构建在 GTK3 上。把 GTK3 应用搬上鸿蒙,Air 系列采用的是共享栈模式:所有走 GTK3 路线的工程共用同一套交叉编译安装前缀,称为 gtk3-stack。
▍原理
与 GTK2 一样,核心是给 GDK3 实现 OHOS 后端,把窗口表面接到 ArkTS 壳提供的原生窗口上,把触摸与鼠标事件翻译成 GDK 事件流。不同点在于 GTK3 引入了客户端装饰与更复杂的输入合成,后端要处理的事件语义更多。共享栈的意义在于:后端与依赖库只维护一份,任何修复所有工程同时受益。
▍共享栈的治理
Air 系列的图像处理与照片冲图两个工程共用 gtk3-stack,构建脚本指向同一安装前缀。治理上有几条硬规矩:栈内库是唯一权威版本,各工程不得为单工程需求就地改栈,专属补丁一律 fork 独立前缀;栈的更新必须做两栈互证,确认零差异后再放量;依赖库按依赖拓扑排好 dlopen 顺序。这套规矩的代价是前期建设慢,收益是第二个、第三个 GTK3 工程的接入成本骤降。
▍适用场景
上游活跃维护的 GTK3 应用;需要长期跟进上游版本的项目;同类应用成批移植时,共享栈几乎是必选项。
▍优缺点
优点:生态最厚,pango 中文渲染、输入法框架、无障碍都是现成的;cairo 渲染管线成熟稳定。缺点:GTK3 的动画与阴影在软渲染下开销不小;整栈体积可观;工程间共享栈也意味着升级要全组回归,节奏不能单工程说了算。
▍真实用例
图像处理工程与照片冲图工程是这条路线的两个代表,从打开大图、图层操作到导出全流程可用。冲图工程还基于同栈做了暗角、曲线等面板的深度触摸化。完整过程见适配全记录对应篇目。
更多真实移植案例,欢迎到 apps 板块翻看 56 篇《鸿蒙PC适配全记录》系列实录。
▍原理
与 GTK2 一样,核心是给 GDK3 实现 OHOS 后端,把窗口表面接到 ArkTS 壳提供的原生窗口上,把触摸与鼠标事件翻译成 GDK 事件流。不同点在于 GTK3 引入了客户端装饰与更复杂的输入合成,后端要处理的事件语义更多。共享栈的意义在于:后端与依赖库只维护一份,任何修复所有工程同时受益。
▍共享栈的治理
Air 系列的图像处理与照片冲图两个工程共用 gtk3-stack,构建脚本指向同一安装前缀。治理上有几条硬规矩:栈内库是唯一权威版本,各工程不得为单工程需求就地改栈,专属补丁一律 fork 独立前缀;栈的更新必须做两栈互证,确认零差异后再放量;依赖库按依赖拓扑排好 dlopen 顺序。这套规矩的代价是前期建设慢,收益是第二个、第三个 GTK3 工程的接入成本骤降。
▍适用场景
上游活跃维护的 GTK3 应用;需要长期跟进上游版本的项目;同类应用成批移植时,共享栈几乎是必选项。
▍优缺点
优点:生态最厚,pango 中文渲染、输入法框架、无障碍都是现成的;cairo 渲染管线成熟稳定。缺点:GTK3 的动画与阴影在软渲染下开销不小;整栈体积可观;工程间共享栈也意味着升级要全组回归,节奏不能单工程说了算。
▍真实用例
图像处理工程与照片冲图工程是这条路线的两个代表,从打开大图、图层操作到导出全流程可用。冲图工程还基于同栈做了暗角、曲线等面板的深度触摸化。完整过程见适配全记录对应篇目。
更多真实移植案例,欢迎到 apps 板块翻看 56 篇《鸿蒙PC适配全记录》系列实录。
楼主
7 天前