A
Air官方
把 90 个工程做下来,最值钱的沉淀不是某一个移植技巧,而是一个组织决策:框架与上游源码集中成共享栈,全部工程经链接复用。这篇讲共享 Frameworks 栈的价值,它对想成批做移植的团队几乎是必读。
▍问题背景
框架库(GTK、Qt、Gecko)编译一次以小时计,装出来的前缀几个 GB 起步。如果每个工程各养一份,后果是:磁盘翻倍、修复不同步(A 工程修好的后端 bug 在 B 工程复现)、版本漂移(同一框架多版本并存,排查时先对版本就是半天)。
▍共享栈的形态
Air 工作区把跨平台框架统一收进一个目录树,按框架分类管理;GTK 与 Qt 各有收敛的安装栈(gtk3 栈、qt 栈),组内工程的构建脚本一律经链接指向前缀。上游应用本体同样集中统一目录。两个工程用同一个 GTK3 栈、五个工程用同一个 Qt 栈,是常态。
▍价值清单
一,修复即全体受益:OHOS 后端的任何改进,全组工程重新链接即得。二,版本统一:升级一次,全组同步,不存在某工程悄悄落后两个版本。三,磁盘与心智成本骤降:新工程接入 GTK 应用,框架层零构建。四,排查有锚点:所有工程的同栈同版本,一个工程的现象可以在另一个工程复现验证。
▍纪律要求
共享的前提是纪律:栈内库禁止单工程就地修改,专属需求一律 fork 独立前缀或走补丁集;栈升级要全组回归;分叉必须登记原因。没有这些纪律,共享栈会退化成污染源——一个工程的私改悄悄伤害所有工程。
▍给团队的迁移建议
第二个同类工程出现时就是建栈的时机;建栈时先做全目录差异校验,确保收敛的栈与各工程原前缀零差异;把栈的读写权限与更新流程写进工程规范。
▍一句话
单工程时代拼技巧,多工程时代拼治理。共享栈是治理的基石。
更多真实移植案例,欢迎到 apps 板块翻看 56 篇《鸿蒙PC适配全记录》系列实录。
▍问题背景
框架库(GTK、Qt、Gecko)编译一次以小时计,装出来的前缀几个 GB 起步。如果每个工程各养一份,后果是:磁盘翻倍、修复不同步(A 工程修好的后端 bug 在 B 工程复现)、版本漂移(同一框架多版本并存,排查时先对版本就是半天)。
▍共享栈的形态
Air 工作区把跨平台框架统一收进一个目录树,按框架分类管理;GTK 与 Qt 各有收敛的安装栈(gtk3 栈、qt 栈),组内工程的构建脚本一律经链接指向前缀。上游应用本体同样集中统一目录。两个工程用同一个 GTK3 栈、五个工程用同一个 Qt 栈,是常态。
▍价值清单
一,修复即全体受益:OHOS 后端的任何改进,全组工程重新链接即得。二,版本统一:升级一次,全组同步,不存在某工程悄悄落后两个版本。三,磁盘与心智成本骤降:新工程接入 GTK 应用,框架层零构建。四,排查有锚点:所有工程的同栈同版本,一个工程的现象可以在另一个工程复现验证。
▍纪律要求
共享的前提是纪律:栈内库禁止单工程就地修改,专属需求一律 fork 独立前缀或走补丁集;栈升级要全组回归;分叉必须登记原因。没有这些纪律,共享栈会退化成污染源——一个工程的私改悄悄伤害所有工程。
▍给团队的迁移建议
第二个同类工程出现时就是建栈的时机;建栈时先做全目录差异校验,确保收敛的栈与各工程原前缀零差异;把栈的读写权限与更新流程写进工程规范。
▍一句话
单工程时代拼技巧,多工程时代拼治理。共享栈是治理的基石。
更多真实移植案例,欢迎到 apps 板块翻看 56 篇《鸿蒙PC适配全记录》系列实录。
楼主
7 天前