构建、调试与发布
推荐目录
text
Ui/
├ Pages/
├ Components/
├ Shared/Templates.pxml
├ Styles/
├ Resources/
└ Localization/页面、Component 和 Import 必须由构建图显式列出,避免 glob 顺序或隐式文件访问影响可重现性。
快速检查
bash
pxmlc format Ui/Pages/Home.pxml -o Home.formatted.pxml
pxmlc check Ui/Pages/Home.pxml --strict \
--component Ui/Components/ActionCard.pxml \
--import Ui/Shared/Templates.pxml格式化不改变语义。CI 应使用 check --strict --warn-as-error,并把 path:line:column 诊断映射回编辑器。
常规构建
bash
pxmlc --full Ui/Pages/Home.pxml -o out/Home.pxb \
--component Ui/Components/ActionCard.pxml \
--import Ui/Shared/Templates.pxml \
-D RELEASE --release --strict --warn-as-error--full 在一个进程内完成 Expander、Optimizer 和 Compiler,避免中间文件 I/O。需要排查阶段结果时再使用:
bash
pxml-expand Home.pxml -o Home.expanded.pxml --component ActionCard.pxml -D DEBUG
pxml-opt Home.expanded.pxml -o Home.pxir --debug
pxml-compile Home.pxir -o Home.pxb --debug --strict查看 PXB
bash
pxmlc inspect out/Home.pxb
pxmlc dump out/Home.pxbinspect 检查 header/section,dump 查看 node、property 和 binding 结构。Debug build 保留 Source Map;Release 使用内容指纹检测损坏与非确定性,但该指纹不是发行签名。
Build symbol
标准 symbol 包括 DEBUG/RELEASE、WINDOWS/LINUX/MACOS 以及产品 edition。相同输入、编译器版本、profile、symbol 与资源必须生成 byte-identical PXB。CI 可以连续构建两次并逐字节比较。
运行时加载边界
PCL.UI.Next 只接受编译后的 PXB。运行时通过 UiBlueprint.FromPxmlBinary(...) 加载不可变 Blueprint,不会在进程内解析 .pxml 源文件。开发期请始终走 pxmlc / pxml-compile 产出 .pxb,再交给宿主或插件 UI 管线。
发布边界
- Core UI 的 PXB 随应用发布,由 Runtime ABI/version gate 验证。
- Dynamic package 需要 manifest、权限、资源与签名;Binding VM 只允许白名单 opcode/function。
- Release archive 的 SHA256/签名负责真实性;BSDIFF 只优化传输。
- 三阶段 PGO corpus 必须分开训练 Expander、Optimizer 和 Compiler 热点。
排错顺序
format排除不稳定文本格式。check --strict修复最早的 source diagnostic。- 查看 expanded PXML,确认 Component/IfBuild/Const 已正确处理。
dump对照 PXB node/property/binding。- Runtime DevTools 查看 Binding、Layout、Motion 和 Scope trace。
最后阅读:完整页面示例。
